问题起因背景是在本机开发时,使用 git 管理项目时,开源项目使用的是 github 托管,企业私有项目使用的是企业版码云管理,之前一直使用 git 的面板工具(mac 平台中的 Sourcetree ),不存在这样的问题,现在想改为命令的习惯使用 git 发现,本机为 gitee 项目生成了公钥,再为 github 生成公钥时,gitee 的公钥就会被覆盖,这就不能愉快的玩耍了。那么如果做到要这两个公钥并存的呢,往下走。

生成 gitee 公钥

生成 gitee 用的 SSH-Key

1
$ ssh-keygen -t rsa -C 'xxxxx@xxx.com' -f ~/.ssh/gitee_id_rsa

tip:「xxxxx@xxx.com」替换为自己 gitee 邮箱

按照提示完成三次回车,即可生成 ssh key。通过查看 ~/.ssh/gitee_id_rsa.pub 文件内容,获取到你的 public key

1
2
$ cat ~/.ssh/gitee_id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwLn0yWMfx6lNOdu58M0JYot......

复制生成后的 public key, 添加为项目公钥:通过仓库主页 「管理」->「部署公钥管理」->「添加部署公钥」,如果需要可写权限那么需要添加到个人公钥。 添加为个人公钥:传送门

详细步骤可参见:

生成 github 公钥

生成一个github 用的 SSH-Key

1
$ ssh-keygen -t rsa -C 'xxxxx@xxx.com' -f ~/.ssh/github_id_rsa

tip:「xxxxx@xxx.com」替换为自己 github 邮箱

github 添加为个人公钥:传送门

创建 config 解决公钥冲突

在 ~/.ssh 目录下新建一个config文件,添加如下内容(其中Host和HostName填写git服务器的域名,IdentityFile指定私钥的路径)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa

测试公钥

1
2
$ ssh -T git@gitee.com
Hi braem! You've successfully authenticated, but GITEE.COM does not provide shell access.
1
2
$ ssh -T git@github.com
Hi dbing! You've successfully authenticated, but GitHub does not provide shell access.

如果提示以上信息,恭喜又可以愉快的玩耍了 :)