使用Github,也许大家觉得比较麻烦的就是在每次push的时候,都需要输入用户名和密码。如果使用SSH,就可以记住用户名,并创建属于自己 的密码来保证安全操作,还有神奇的一招可以“不用输入密码”哦。下面将介绍如何创建SSH Keys并将公钥加到GitHub账户中,使用SSH Keys在本机和GitHub之间建立一个安全的连接。

一、Windows环境下生成SSH key且连接GitHub

第一步、看看是否存在SSH密钥(keys)

首先,我们需要看看是否看看本机是否存在SSH keys,打开Git Bash,并运行:

 
1
$cd~/.ssh#

检查你本机用户home目录下是否存在.ssh目录

如果,不存在此目录,则进行第二步操作,否则,你本机已经存在ssh公钥和私钥,可以略过第二步,直接进入第三步操作。

第二步、创建一对新的SSH密钥(keys)

输入如下命令:

 
1
2
3
4
$ssh-keygen-trsa-C"your_email@example.com"
#这将按照你提供的邮箱地址,创建一对密钥
Generating public/privatersa key pair.
Enter file inwhich tosave the key(/c/Users/you/.ssh/id_rsa):[Press enter]

直接回车,则将密钥按默认文件进行存储。此时也可以输入特定的文件名,比如/c/Users/you/.ssh/github_rsa

接着,根据提示,你需要输入密码和确认密码(说到这里,如果你很放心,其实可以不用密码,就是到输密码的地方,都直接回车,所以每次push就只管回车就行了。所谓的最安全的密码,就是没有密码  – –  哈哈)。相关提示如下:

 
1
2
Enter passphrase(empty forno passphrase):[Typeapassphrase]
Enter same passphrase again:[Type passphrase again]

输入完成之后,屏幕会显示如下信息:

 
1
2
3
4
Your identification has been saved in/c/Users/you/.ssh/id_rsa.
Your publickey has been saved in/c/Users/you/.ssh/id_rsa.pub.
The key fingerprint is:
01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com

第三步、在GitHub账户中添加你的公钥

运行如下命令,将公钥的内容复制到系统粘贴板(clipboard)中。

 
1
clip<~/.ssh/id_rsa.pub

接着:

1. 登陆GitHub,进入你的Account Settings.

2. 在左边菜单,点击”SSH Keys”.

3. 点击”Add SSH key”按钮.

4. 粘贴你的密钥到key输入框中.

5. 点击”Add Key”按钮。

6. 再弹出窗口,输入你的GitHub密码,点击确认按钮。

7. 到此,大功告成了!

第四步、测试

为了确认我们可以通过SSH连接GitHub,我们输入下面命令。输入后,会要求我们提供验证密码,输入之前创建的密码就ok了。

 
1
$ssh-Tgit@github.com

你可能会看到告警信息,如下:

 
1
2
3
The authenticity of host'github.com (207.97.227.239)'can'tbe established.
RSA key fingerprint is16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want tocontinueconnecting(yes/no)?

不用担心,直接输入yes。

如果看到下面信息,就说明一切完美!

Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.

二、Mac环境下生成SSH key且连接GitHub

第一步、看看是否存在SSH密钥(keys)

首先,我们需要看看是否看看本机是否存在SSH keys,打开终端(Terminal),并运行:

$cd ~/.ssh
# 检查你本机用户home目录下是否存在.ssh目录
如果,不存在此目录,则进行第二步操作,否则,你本机已经存在ssh公钥和私钥,可以略过第二步,直接进入第三步操作。

第二步、创建一对新的SSH密钥(keys)

输入如下命令:

 
1
2
3
4
$ssh-keygen-trsa-C"your_email@example.com"
#这将按照你提供的邮箱地址,创建一对密钥
Generating public/privatersa key pair.
Enter file inwhich tosave the key(/Users/you/.ssh/id_rsa):[Press enter]

直接回车,则将密钥按默认文件进行存储。此时也可以输入特定的文件名,比如/Users/you/.ssh/github_rsa

接着,根据提示,你需要输入密码和确认密码。相关提示如下:

 
1
2
Enter passphrase(empty forno passphrase):[Typeapassphrase]
Enter same passphrase again:[Type passphrase again]

输入完成之后,屏幕会显示如下信息:

 
1
2
3
4
Your identification has been saved in/Users/you/.ssh/id_rsa.
Your publickey has been saved in/Users/you/.ssh/id_rsa.pub.
The key fingerprint is:
01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com

第三步、在GitHub账户中添加你的公钥

运行如下命令,将公钥的内容复制到系统粘贴板(clipboard)中。

pbcopy < ~/.ssh/id_rsa.pub
接着:

1. 登陆GitHub,进入你的Account Settings.

2. 在左边菜单,点击”SSH Keys”.

3. 点击”Add SSH key”按钮.

4. 粘贴你的密钥到key输入框中.

5. 点击”Add Key”按钮。

6. 再弹出窗口,输入你的GitHub密码,点击确认按钮。

7. 到此,大功告成了!

第四步、测试

为了确认我们可以通过SSH连接GitHub,我们输入下面命令。输入后,会要求我们提供验证密码,输入之前创建的密码就ok了。

$ ssh -T git@github.com
你可能会看到告警信息,如下:

 
1
2
3
The authenticity of host'github.com (207.97.227.239)'can'tbe established.
RSA key fingerprint is16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want tocontinueconnecting(yes/no)?

不用担心,直接输入yes。

如果看到下面信息,就说明一切完美!

Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.
【注意】

如果前面没有将生成的密钥存放在默认的文件id_rsa中(而是my_rsa中),那么ssh -T git@github.com命令就需要添加参数来执行。如下:

$ ssh -T -i my_rsa git@github.com

三、单机如何控制不同的SSH Keys连不同的Git环境?

其实,一套SSH密钥是可以用在不同的SSH环境的.

但是如果由于某种要求,需要用不同的SSH密钥连接不同的Git环境。假设具体场景是,已经建了密钥github_rsa,还需要创建work_rsa连接工作环境git仓库,那么,可以按下面操作进行:

1. 创建另一对密钥work_rsa.

$ssh-keygen -t rsa -C “work@mail.com”
#保存密钥为work_rsa

2. 添加新身份信息

$ssh-add ~/.ssh/work_rsa

3. 配置.ssh/config

我们需要通过Host别名,将不同的账号区分开来。

 
 
1
2
3
4
5
6
7
8
9
Host me.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile~/.ssh/github_rsa
 
Host work.comp.com
HostName comp.com
PreferredAuthentications publickey
IdentityFile~/.ssh/work_rsa

参考文档:GitHub官方文档Generating SSH Keys

使用SSH密钥连接Github的更多相关文章

  1. 添加SSH密钥到GitHub

    $ clip < ~/.ssh/id_rsa.pubbash: /c/Users/UsersName/.ssh/id_rsa.pub: No such file or directory [转] ...

  2. Mac下使用SSH(密钥)访问Github

    1,终端中输入:cd ~/.ssh 如果出现 -bash: cd: /Users/glamor/.ssh: No such file or directory,说明你之前没有用过.直接执行第二步. 如 ...

  3. 如何配置 SSH 密钥连接 Git 仓库

    SSH 是 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:是建立在应用层基础上的安全协议. SSH 是目前较可靠,专为远程登录会话和其 ...

  4. 通过SSH去连接 github 和bitbucket

    github 和 bitbucket 都是项目托管服务器, 1 创建SSH private key and public key 首先需要安装git命令, 并且请检查是否有ssh 命令. 打开 Git ...

  5. SSH Key连接github提示Permission denied (publickey).错误

    root@debian64:/home/xiaoliuzi/.ssh/key_backup# ssh -T git@github.com The authenticity of host 'githu ...

  6. 创建SSH Key连接github或gitlab

    mac下用SoureceTree下载github或gitlab上的项目时,需要进行ssh key验证.每次重装系统啥的都要重新弄,我在csdn上看到一篇不错的文章.转载一下,以后自己找起来也方便. 地 ...

  7. Mac下git通过SSH进行免密码安全连接github

    Git——The stupid content tracker(傻瓜内容跟踪器) Git是Linux的缔造者Linus Torvalds为了帮助管理Linux内核源码而开发的一款免费.开源的分布式版本 ...

  8. window下配置SSH连接GitHub、GitHub配置ssh key(转)

    转自:http://jingyan.baidu.com/article/a65957f4e91ccf24e77f9b11.html 此经验分两部分: 第一部分介绍:在windows下通过msysGit ...

  9. window下配置SSH连接GitHub、GitHub配置ssh key

    window下配置SSH连接GitHub.GitHub配置ssh key   此经验分两部分: 第一部分介绍:在windows下通过msysGit(Git for windows.Git Bash)配 ...

随机推荐

  1. linux下一键安装 powershell,的bash脚本

    说明 目前,linux下的powershell约等于pash.希望大家专注mono,关注pash. 一键安装脚本包括for centos6,centos7,ubuntu 14.04  ubuntu 1 ...

  2. 纯JS文本在线HTML编辑器KindEditor

    KindEditor(http://www.kindsoft.net)是一款比较专业,主流,好用的在线HTML编辑器. 它除了可以将文本进行编辑.将Word中的内容复制进来外,本身还可以拖动缩放(右下 ...

  3. [Windows驱动]驱动包(Driver Packages)

    在windows下安装一个驱动,我们你需要把所有需要的软件打包-称为驱动包.驱动包里包括系统提供的给所有设备类使用的一般安装工具,还包括了设备商提供的设备特定的组件.下面我们就来看看驱动包里具体需要哪 ...

  4. mine layer(2008 World Final C)

    类似于扫雷游戏,在一些格子中散布着一些地雷,具体的埋藏位置并不清楚,但知道每个格子及其周围八个格子的地雷总数.请问此时正中间那一行最多可能有多少地雷(题目假定所有的输入都是奇数行的)? 输入: 第一行 ...

  5. scanf和scanfs的区别

    scanf()函数是标准C中提供的标准输入函数,用以用户输入数据 scanf_s()函数是Microsoft公司VS开发工具提供的一个功能相同的安全标准输入函数,从vc++2005开始,VS系统提供了 ...

  6. poj2184 背包

    //Accepted 1492 KB 110 ms //背包 //把si看成weight,Fi看成value,这可以表示成当dp[j]=max(dp[j-weight[i]]+value[i]) // ...

  7. CGAffineTransformMakeTranslation和CGAffineTransformTranslate

    分类: ios基础2013-01-06 22:05 15513人阅读 评论(2) 收藏 举报 1.CGAffineTransformMakeTranslation每次都是以最初位置的中心点为起始参照 ...

  8. JS 跨域问题浅析及解决方法优缺点对比(转)

    1.所谓 JS 跨域问题,是指在一个域下的页面中通过js访问另一个不同域下 的数据对象, 出于安全性考 虑,几乎所有浏览器都不允许这种跨域访问,这就导致在一些ajax应用中, 使用跨域的web ser ...

  9. 数组prototype添加函数呢,采用回调判定函数内容

    1.解决方案 Array.prototype.all = function (p) { return this.filter(p).length == this.length; }; Array.pr ...

  10. C#泛型(二)

    <1>.泛型方法 以前文章说到用一个泛型类 SortHelper 来做一个冒泡排序的处理,下面回顾一下之前的代码: public class SortHelper<T> whe ...