一般来说我们都会存在至少两个代码仓库,为了实现ssh clone的话,我们需要配置多个ssh公钥,但是默认情况下git只会从.ssh/id_rsa读取配置。

比如我自己,我一般会存在三个代码仓库,giteegithub,以及公司的私有仓库,那么就会触发我现在的这个问题。


生成多个ssh密钥

一般情况下,github是我用的最多的,我会将默认的指定到github,默认不需要配置。那么对于gitee以及公司的代码仓库就需要配置了,这里我拿gitee举例。

生成gitee密钥

1
2
3
# 命名最好有辨识度,这里需要指定下文件,不然会以默认文件命名将已经生成的默认的.ssh/id_rsa 进行覆盖了
ssh-keygen -t rsa -f ~/.ssh/gitee_id_rsa -C "xxxxx"
# 后续的操作就是疯狂的摁回车了

识别新的ssh key密钥

我们需要将新的密钥加入到ssh agent

1
2
ssh-agent bash
ssh-add ~/.ssh/gitee_id_rsa

多账号配置config文件

~/.ssh/config文件中加入配置指定仓库的认证文件

1
2
3
4
5
6
# gitee
Host gitee.com
Port 22
HostName gitee.com
User git
IdentityFile ~/.ssh/gitee_id_rsa

仓库配置ssh key

.ssh/gitee_id_rsa.pub中的内容粘贴到仓库对应的ssh key配置中

测试

我自己测试了下,具体结果如下,测试成功,剩下的就是愉快的通过ssh的方式克隆仓库代码了。
测试