[原创] 在Github上添加SSH key

如果你在Github上有一个项目,为了能让这个项目可以在多台计算机上开发,需要把目标计算机的SSH key添加到你的Github账户中,否则你以SSH方式git clone时会提示无权限,例如你可以试试:

git clone git@github.com:codelast/raspberry-pi.git

会输出类似于这样的错误信息:

Permission denied (publickey).

文章来源:http://www.codelast.com/
所以下一步就要在Github中添加SSH key,让你可以在目标计算机上进行开发以及代码提交。
其实Github上已经有完整的教程了,只不过我记性不好,每次都要去翻Github教程,所以特地写下来。

检查SSH key是否已经存在
检查文件 ~/.ssh/id_rsa.pub 是否存在,如果存在,就不用生成一个新的SSH key了,直接跳到下面的第3步。
如果该文件存在,但你不想使用它的话,那么就按下面的做法另外生成一个文件也可以(例如 ~/.ssh/id_rsa_github.pub)。
文章来源:http://www.codelast.com/
 生成一个新的SSH key
如果第1步中的SSH key不存在,则需要生成:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

其中,your_email@example.com要修改成你的邮箱地址。
回车后输出如下:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/xxx/.ssh/id_rsa):

其中,xxx是你的用户名,直接回车,会将key保存到默认文件中。
接着会输出:

Enter passphrase (empty for no passphrase): 
Enter same passphrase again:

这两步是让你输入一个密码,以及确认密码,这个密码在你提交代码到Github时会用到。将这个密码设置成和另一台可以提交代码的计算机上的那个密码一致(要不然在N台计算机上就有N个密码,太麻烦了)。
回车后就提示成功了:

Your identification has been saved in /home/xxx/.ssh/id_rsa.
Your public key has been saved in /home/xxx/.ssh/id_rsa.pub.
The key fingerprint is:
01:0f:f4:3b:...:f0:a2:db your_email@example.com

到这一步,你会发现 ~/.ssh/id_rsa.pub 文件已经生成了。
文章来源:http://www.codelast.com/
 将SSH key添加到ssh-agent
先确认ssh-agent处于启用状态:

eval "$(ssh-agent -s)"

输出类似于:

Agent pid 32070

然后将SSH key添加到ssh-agent:

ssh-add ~/.ssh/id_rsa

这时又会要你输入密码:

Enter passphrase for /home/xxx/.ssh/id_rsa:

再次输入前面第2步中设置的密码,回车,这一步就算完成了。
文章来源:http://www.codelast.com/
 将SSH key添加到Github账户中
将SSH key复制到内存:

xclip -sel clip < ~/.ssh/id_rsa.pub

如果你的程序没有安装过xclip程序的话,需要先用 sudo apt-get install xclip 安装(对Ubuntu来说)。如果你不想装这个程序,直接 cat ~/.ssh/id_rsa.pub 并复制出其中的内容也可以。
然后,在Github个人设置的“SSH keys”界面中,点击“Add SSH key”,如下图所示:

Title 栏里填一个有意义的名字,用于标识你这个SSH key是用在哪里的,然后在 Key 那一栏里粘贴上刚用 xclip 命令复制出来的SSH key,最后点击“Add key”即可将此key添加到你的Github账户中了。

Add an SSH key

现在再试试本文一开始所说的git clone命令,你应该可以用SSH方式clone你有权限的项目了。
文章来源:http://www.codelast.com/
 设置每次git远程操作时无需输入密码
在进行git远程操作时,例如git pull,git push等命令,会要求你输入密码,为了免密码操作,可以将密码存储:

git config --global credential.helper store

此外,在 ~/.ssh/config 文件中还要做以下配置:

# GitHub
Host github.com
HostName github.com
AddKeysToAgent yes
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
这一段配置,会在你git pull的时候自动读取,它的大概含义就是:对github.com域名,指定使用publickey验证,密钥认证使用的私钥文件是 IdentityFile ~/.ssh/id_rsa(如果你像前面说的使用了别的文件名例如 id_rsa_github,那么这里也要做相应的修改)。
注意:标红的那一行,我发现在MacOS上没有的话就无效。

文章来源:https://www.codelast.com/
➤➤ 版权声明 ➤➤ 
转载需注明出处:codelast.com 
感谢关注我的微信公众号(微信扫一扫):

wechat qrcode of codelast

发表评论