Hexo博客搭建 (二):配置Github的SSH key
配置Github的SSH Key
什么是SSH
很多朋友在用github管理项目的时候,都是直接使用https url克隆到本地,当然也有有些人使用 SSH url 克隆到本地。然而,为什么绝大多数人会使用https url克隆呢?
这是因为,使用https url克隆对初学者来说会比较方便,复制https url 然后到 git Bash 里面直接用clone命令克隆到本地就好了。而使用 SSH url 克隆却需要在克隆之前先配置和添加好 SSH key 。
因此,如果你想要使用 SSH url 克隆的话,你必须是这个项目的拥有者。否则你是无法添加 SSH key 的。
生成多个公钥请点击http://www.cnblogs.com/ayseeing/p/4445194.html
https 和 SSH 的区别:
1、前者可以随意克隆github上的项目,而不管是谁的;而后者则是你必须是你要克隆的项目的拥有者或管理员,且需要先添加 SSH key ,否则无法克隆。
2、https url 在push的时候是需要验证用户名和密码的;而 SSH 在push的时候,是不需要输入用户名的,如果配置SSH key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。
如何配置Github的SSH
Step 1:检查SSH Keys
首先,我们要查看在你电脑上已经存在的SSH keys。运行Git Bash 然后输入:
$ ls -al ~/.ssh |
这两个命令就是检查是否已经存在 id_rsa.pub 或 id_dsa.pub 文件,如果文件已经存在,那么你可以跳过步骤2,直接进入步骤3。
Step 2:生成SSH key
1. 在Git Bash中输入下面命令,引号内一定是你的Github注册邮箱地址
$ ssh-keygen -t rsa -b 4096 -C "your_github_email@example.com" |
2. 等待几秒,当提示让你输入保存地址时,官方特别推荐放在默认位置就可以了。所以这里直接输入回车,提示如下:
Enter file in which to save the key (/Users/you/.ssh/id_rsa):[直接输入回车] |
3. 将会提示你输入一个密码串(这里输入密码时不会显示在屏幕上的,只要输入正确按回车就好):
Enter passphrase (empty for no passphrase): [输入你想设置的密码] |
4. 输完密码之后,你将会得到你的SSH的print或者id。
Your identification has been saved in /c/Users/you/.ssh/id_rsa. |
当你看到上面这段代码的收,那就说明,你的 SSH key 已经创建成功,你只需要添加到github的SSH key上就可以了。
Step 3:添加SSH key到ssh-agent
1.输入如下命令
$ ssh-agent -s |
会响应:
echo Agent pid [端口号] |
2.把SSH key添加到ssh-agent
$ ssh-add ~/.ssh/id_rsa |
如果他提示如下,说明不能打开您身份验证的代理
Could not open a connection to your authentication agent. |
只需要输入如下命令即可解决:
ssh-agnet bash |
更多关于ssh-agent的细节,可以用man ssh-agent 来查看
Step 4:添加SSH key到Github账户
$ clip < ~/.ssh/id_ras.pub |
添加到你的Github账户:
1. 浏览器登陆你的Github账户,点击右上角你的头像,然后点击Settings
2.进入Settings,点击侧栏选项SSH key
3.单击右边 Add SSH key 按钮
4. 在下面输入标题(Title,这个可以自定义)和SHH Key(直接 Ctrl+V 粘贴就可以)
5. 点击下面的Add key按钮便可以添加成功了
Step 5:查看Mac下存在的id_ras.pub/id_rsa
~/.ssh |
Step 6:测试是否连接成功
1. 在Git Bash中输入:
$ ssh -T git@github.com |
2.你可能看到下面的警告:
The authenticity of host 'github.com(207.97.227.239)' can't be established. |
确定提示信息里的指纹(fingerprint)是否匹配,如果匹配就键入`yes`,将得到:
Hi [你的用户名]! You’ve successfully authenticated, but GitHub does not provide shell access.