在工作中我们一定遇到过这种情况,就是在公司编写的代码会存储在公司内网的Gitlib上,但是我们在开发中又很想让优秀的代码连接到开源项目上,而这些开源的项目又都在外网的GitHub上。这个时候我们就需要在本地配置两个 SSH key,一个是内网的,一个是外网的。
那么我们应该如何配置呢?
生成SSH key
首先我们需要生成两个SSH key
生成一个github使用的key
ssh-keygen -t rsa -C 'xxxxx@163.com' -f ~/.ssh/github_id_rsa
然后再生成一个公司邮箱生成的gitlib的key
ssh-keygen -t rsa -C 'xxxxx@gongsi.com' -f ~/.ssh/gitlib_id_rsa
修改配置文件
这个时候,需要在~/.ssh 目录下创建一个config的文件,并且在这个文件中添加如下的内容。
# gitlib
Host gitlib.com
HostName gitlib.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlib_id_rsa
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa
其中 Host 和 HostName 是Git服务的域名,IdentityFile 则是值私钥的路径。
配置网站公钥Public Key
完成上述配置之后,分别去GitHub和gitlab上分别配置对应Public Key。需要注意的是一定要分别进行配置。
测试生效
通过如下的两个命令分别测试
ssh -T git@gitlib.com
ssh -T git@github.com
Git命令的配置
虽然通过上面的方式分别配置成功了两个SSH key。但是还需要注意的就是提交用户信息。因为我们分别往GitHub和GitLib上提交的用户信息可能不是同一个信息。所以在配置Git全局用户信息的时候,就需要注意使用哪个邮箱进行配置。
例如如果全局配置的是GitHub的邮箱,那么就需要在GitLib下再配置一个公司的邮箱。
例如
# 配置全局个人信息为公司信息,配置员工信息
git config --global user.name 'chengxuyuan'
git config --global user.email 'xxxx@company.com'
# 在某个github仓库下,配置个人信息
git config user.name '快乐的程序员'
git config user.email 'xxx@qq.com'
总结
通过上面的一系列的配置,我们就可以配置一个既可以访问公司内网的GitLib也可以访问外网的GitHub的仓库了。