译自文章 https://help.github.com/articles/connecting-to-github-with-ssh/
1.SSH协议
- 使用SSH协议 你能连接远程服务跟自身的服务进行身份验证,使用SSH密钥,能使你在每次连接服务器的时候不用输入用户名和密码。
以下操作都是在终端进行
2.检查是否存在SSH密钥
#列出~/.ssh中的文件
ls -al ~/.ssh
3.生成SSH密钥并加入ssh-agent
-
生成密钥
ssh-agent -- 可以管理ssh密钥跟记得你的密码 如此便可以在你每次使用ssh密钥时不用输入密码ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
终端输出
Enter file in which to save the key (/Users/yourname/.ssh/id_rsa):
建议自己在 ~/.ssh 文件中添加一个文件,以免下次生成替换了当前密钥对,如:/Users/you/.ssh/test
然后提示设置密码,您随意。
2.加入agent
- 在后台启动ssh-agent
eval "$(ssh-agent -s)"
2.如果你使用macOS Sierra 10.12.2或更高版本的系统,你需要手动修改文件 ~/.ssh/config 让ssh-agent自动加载密钥并存储在你的钥匙串中
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/test
3.将你的密钥加入agent并存储到钥匙串中
$ ssh-add -K ~/.ssh/test
4.修改ssh密钥的密码
还记得 2中生成密钥对时让你输入密码吗?如果你嫌将他们加入ssh-agent麻烦,又不想每次连接服务器都要输入密码,怎么办呢?那就不设密码呗,也就是说 2中生成密钥对时密码可以为空,如果已经设了密码那就可以用这个重设为空了
启动ssh密钥的创建过程
ssh-keygen -p
终端会输出
Enter file in which the key is (/Users/you/.ssh/id_rsa):/Users/you/.ssh/ test
Enter new passphrase (empty for no passphrase): [Type new passphrase]
Enter same passphrase again: [One more time for luck]
Your identification has been saved with the new passphrase.
ps.
如果不想每次启动都输入密码,还可以添加ssh的公钥到authorized_keys文件中
// 添加ssh的公钥到authorized_keys文件中
$ mkdir ~/.ssh && cd ~/.ssh
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys