Skip to content

Latest commit

 

History

History
78 lines (46 loc) · 3.58 KB

2019-12-26-如何管理多个SSH Key并可进行连接?.md

File metadata and controls

78 lines (46 loc) · 3.58 KB

如何管理多个SSH Key并可进行连接?

​ 有时候我们会遇到这样的场景:我们有一台电脑,在公司用于上班,在家里用于学习与写作。在公司上班,代码需要提交到指定的代码仓库,并且有些是IP地址直连;在家学习与写作时,需要将输出物上传到github等开源仓库托管以便学习与交流。这个时候一个SSH Key就不够了,因此为了满足这种情况还需要增加多个SSH Key。 ​ 本文以管理两个SSH Key举例,管理多个SSH Key原理类似。

1.生成第一个SSH Key

​ 公司项目代码需要提交到 gerrit ,我们来生成第一个SSH Key用于提交代码至gerrit。

​ 在git bash里输入以下命令:

$ ssh-keygen -t rsa -C"youremail@yourcompany.com"

​ 其中 -t 是指定密钥的类型(The type of the key to generate),-C 是用于识别这个密钥的注释(comment to identify the key),所以 youremail@yourcompany.com 可以填写任意内容,个性化一点就好哒。

​ 一路回车,这样就能使用ssh生成第1个key了,默认会在根目录(windows下是:C:\Users\LGD.HuaFEEng\.ssh)下生成 id_rsa, id_rsa.pub 2个文件,即公钥和私钥(LGD.HuaFEEng是我的用户名)。

2.生成第二个SSH Key

​ 同样,用 ssh-keygen 命令来生成第二个SSH Key,此时不要一路回车,而是要为文件指定一个名字,例如:id_rsa_github,回车,完成后会生成id_rsa_github 与 id_rsa_github.pub两个文件。

​ 最后生成两个key的结果如图所示:

生成两个key的结果

3.修改配置文件

# gerrit
Host <gerritExampleHost>
    HostName <gerritExampleHostName>
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa
    User shiconghua
    Port <gerritExamplePort>

# github
Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_github

​ 其中 Host 字段任意填写,标志出区别就好,HostName 字段需要填写公司 gerrit 地址,如何去找呢?在我们项目根目录下的 .git/config 里,如图

​ shiconghua 是我的 gerrit 用户名,所以是取@之后端口号之前的地址,然后配置里的 Port 字段就填写这个数字端口(默认22)。

4.将私钥添加到ssh-agent

​ 为什么要做这一步?

ssh-add命令是把专用密钥添加到ssh-agent的高速缓存中

​ 我们依次在git bash里执行

$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa
$ ssh-add ~/.ssh/id_rsa_github

​ 然后可以执行 ssh-add -l 查看。

5.设置SSH keys

​ 依次将公钥放到 gerrit 与 github,这里以 github 为例,Setting/SSH and GPG keys,点击New SSH key,复制公钥内容,保存。

6.测试连接

​ 我们可以用ssh来测试连接。

测试连接gerrit

​ 可以看到显示了我们配置的用户名,并且显示了successfully,连接成功!

测试连接github

​ 同样,我们看到 github 也连接成功!

注意:mac上与windows类似,最主要的是注意文件路径。