同一台电脑管理多个SSH key

SSH key生成

ssh key生成

1
$ ssh-keygen -t rsa -C "xxx@xxx.com"

此时会提示保存key的名字及路径,我们只需要自定义key的名字(路径)即可。

1
Enter file in which to save the key (/Users/caichenghan/.ssh/id_rsa):

填写自定义路径

1
/Users/caichenghan/.ssh/id_rsa_github

输入密码生成 ssh key ,可直接按Enter进入生成。

查看生成的ssh key

1
2
$ cd /Users/caichenghan/.ssh
$ ls

目录下会多出2个文件,分别为 id_rsa_githubid_rsa_github.pub ,前者为私钥,后者为公钥,我们只需要把公钥上传到github账户的公钥管理中即可。

我们还可以使用Finder查看该路径:Finder->右键->前往文件夹-> ~/.ssh

查看公钥

1
$ cat ~/.ssh/id_rsa_github.pub

查看名为 id_rsa_github.pub 的公钥,然后将公复制下来,打开 Github 个人设置中的 公钥管理 中,添加公钥即可。

账户验证

1
$ ssh -T git@github.com

此时会有个提示,如下

1
2
3
The authenticity of host 'github.com (52.74.223.119)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?

说是无法与名为 github.com 的站点建立真实可靠的链接,RSA秘钥的指纹识别为256位的SHA….是否需要继续链接?

其实说白了就是要在本地保存 github.com 的公钥,与 Githu 信息交互的时候要带上这个公钥,以便于 Github 解密。有点类似于 Githug 给你一把锁(公钥),你用这个锁锁住信息,然后丢给 Githubgithub 就可以用它自己的钥匙(私钥)来解开这把锁来查看信息了。

站点的公钥信息,可以在 ~/.ssh 目录下的 known_host 里查看。有时候需要删除这个 known_host 里的站点公钥,重新建立安全连接。

然而,此时的验证确是失败的,因为这个验证会使用默认的名为 id_rsaid_rsa.pub 的文件进行信息交互,很显然这不是我们想要的。what can i do ?

ssh key 配置文件制作

配置文件制作

1
$ vim ~/.ssh/config

配置 github 的ssh key

1
2
3
4
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github

其中 Host 为站点; HostName 为站点名; PreferredAuthentications 为优先使用公钥连接; IdentityFile ,私钥路径。

如果站点为 ip地址 ,则用 ip地址 代替 域名 即可。

再次验证

1
$ ssh -T git@github.com
1
Hi xxx! You've successfully ...

成功!

同理,我们还可以继续添加其它账号的 ssh key ,这样就可以同一台电脑,使用多个 ssh key 免密码的git操作了。

上次更新 2018-08-28