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 | $ cd /Users/caichenghan/.ssh |
目录下会多出2个文件,分别为 id_rsa_github
、 id_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 | The authenticity of host 'github.com (52.74.223.119)' can't be established. |
说是无法与名为 github.com
的站点建立真实可靠的链接,RSA秘钥的指纹识别为256位的SHA….是否需要继续链接?
其实说白了就是要在本地保存 github.com
的公钥,与 Githu
信息交互的时候要带上这个公钥,以便于 Github
解密。有点类似于 Githug
给你一把锁(公钥),你用这个锁锁住信息,然后丢给 Github
。 github
就可以用它自己的钥匙(私钥)来解开这把锁来查看信息了。
站点的公钥信息,可以在 ~/.ssh
目录下的 known_host
里查看。有时候需要删除这个 known_host
里的站点公钥,重新建立安全连接。
然而,此时的验证确是失败的,因为这个验证会使用默认的名为 id_rsa
和 id_rsa.pub
的文件进行信息交互,很显然这不是我们想要的。what can i do ?
ssh key 配置文件制作
配置文件制作
1 | $ vim ~/.ssh/config |
配置 github
的ssh key
1 | Host github.com |
其中 Host
为站点; HostName
为站点名; PreferredAuthentications
为优先使用公钥连接; IdentityFile
,私钥路径。
如果站点为 ip地址
,则用 ip地址
代替 域名
即可。
再次验证
1 | $ ssh -T git@github.com |
1 | Hi xxx! You've successfully ... |
成功!
同理,我们还可以继续添加其它账号的 ssh key
,这样就可以同一台电脑,使用多个 ssh key
免密码的git操作了。