我遇到了以下问题。
我有2个项目,我使用github。第一个项目进展顺利,我创建了一个公钥,输入密码并推入github。没问题。
第二个项目,我创建了另一个公钥,当我想推送到第二个存储库时,它不断要求第一个代码/.ssh/id_rsa的密码。但是id_rsa拥有我第一个项目的公钥。所以当然,当我输入密码时它不会工作,因为它会尝试进入第一个回购而不是第二个。
如何创建公钥并告诉git我想推送到另一个仓库?
感谢。
答案 0 :(得分:3)
您需要在~/.ssh/config
文件中声明不同的ssh密钥,正如我在“How to manage multiple ssh keys in the ~/.ssh directory”中所解释的那样
我建议不要使用键的默认名称,而是:
~/.ssh/proj1
~/.ssh/proj1.pub
~/.ssh/proj2
~/.ssh/proj2.pub
然后有一个~/.ssh/config
喜欢:
Host ghproj1
User git
Hostname github.com
IdentityFile ~/.ssh/proj1
IdentitiesOnly yes
Host ghproj2
User git
Hostname github.com
IdentityFile ~/.ssh/proj2
IdentitiesOnly yes
您需要更改两个回购中的原始网址:
cd /path/to/cloned/proj1
git remote set-url origin ghproj1:yourProject1
cd /path/to/cloned/proj2
git remote set-url origin ghproj1:yourProject2
详见:
像ghproj1:yourProject1
这样的网址是一个网站,它会明确使用您在~/.ssh/config
中为ghproj1
条目指定的密钥。
在OP的情况下(answer below),正确的网址是:
~/.ssh/id_recaprojekt
注意:您需要指定私钥的路径(私有,非公开,不是.pub
)
cd /path/to/cloned/plastickychirurg
git remote set-url origin plastickychirurg:michalfeher/plastickychirurg.git
cd /path/to/cloned/recaprojekt
git remote set-url origin recaprojekt:michalfeher/recaprojekt.git
请注意,我在主机条目中添加了“主机名”。
〜/ .ssh / config文件中对这些条目的所有想法都不是(重复不是)把git
或github.com
放在网址中(它是由与每个条目相关联的项目完成的任务):
所以:
git@github.com:michalfeher/recaprojekt.git
与:
相同 recaprojekt:michalfeher/recaprojekt.git
除了第二个网址将使用ssh密钥