需求
今天在多人协同项目中发现,有部分小伙伴无法成功推送,一直提示:
Error: Key already in useThis error occurs when you try to add a key,
that's already been added to another account or repository
问题描述
检查发现用户已经在本地git中配置了一个 ssh公钥项目,使用该公钥会导致在GitHub中绑定失败,重新创建公钥会影响其他项目推送:
问题原因
机器A当前的公钥是user1的,user2没有权限使用;想在user2的账户中添加user1的公钥?也是不可能的,会提示公钥已经被使用。
解决方案
- 在user2的项目目录中打开命令行,执行命令:
ssh-keygen -t rsa -C "mail@exam.com" -f ~/.ssh/id_rsa_for_user2
,生成专属user2的密钥对,再进入user2的github账户将公钥配置完成。 - 在
~/.ssh/
目录下新建config
文件,写入以下内容:
#Default GitHub
Host user1
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
Host user2
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_for_user2
- 回到命令行,执行命令:
$ git remote set-url origin user1:user1Name/repositorie1Name.git
,修改默认的关联。也可以把原有的默认关联删除,重新添加。 - 再继续执行命令:
$ git remote add origin2 user2:user2Name/repositorie2Name.git
,新添加一个user2的关联。 - 此时执行命令:
$ git remote -v
,应是以下结果:
origin2 user2:user2Name/repositorie2Name.git (fetch)
origin2 user2:user2Name/repositorie2Name.git (push)
origin user1:user1Name/repositorie1Name.git (fetch)
origin user1:user1Name/repositorie1Name.git (push)
- 验证。可分别执行命令:
$ ssh -T user1
、$ ssh -T user2
,均出现连接成功提示,实现了多个SSH公钥连接多个github远程仓库的需求。
Hi user1! You've successfully authenticated,
but GitHub does not provide shell access.
Hi user2! You've successfully authenticated,
but GitHub does not provide shell access.