我已经跟踪了一百万关于此的指南,我无法让它发挥作用。早些时候,我成功地通过SSH推送到我的私人Bitbucket git存储库,现在突然它不会工作。
我用新密码重新创建了密钥,将其添加到我的Bitbucket设置中,它无法正常工作。
好的,这是我采取的步骤:
ssh-keygen -f ~/.ssh/project1 -C "project1"
config
文件中创建了~/.ssh
,其中包含以下内容: Host project1
HostName bitbucket.org
IdentityFile ~/.ssh/project1
Host project2
HostName bitbucket.org
IdentityFile ~/.ssh/project2
project1.pub
的内容,并在我的Bitbucket帐户中创建了一个新的SSH密钥条目。ssh-agent
插件列表中添加~/.zshrc
,如下所示:plugins=(git ssh-agent)
并重新启动终端ssh-add -l
并且只看到project2
已加载ssh-add ~/.ssh/project1
输入了我的密码和成功,就像这样: 2048 SHA256:THESHA256 /Users/myuser/.ssh/project2 (RSA)
2048 SHA256:THESHA256 /Users/myuser/.ssh/project1 (RSA)
ssh-add -l
并列出了两个条目git push
,它告诉我我无法访问。当我ssh -T git@bitbucket.com
时,它告诉我我使用 project2 的用户名登录。
以project2_user身份登录。
我的系统 OS X 10.11.5
我永远无法在我的计算机上修复多个身份并始终使用HTTPS,但我需要使用SSH使一切更安全,这也允许我的帐户进行双因素身份验证。因此,现在必须使用SSH,我不知道该怎么做。
P.S:我也为 project2 的身份做了创建步骤,但我相当确定它也不起作用。
我遵循的指南:
修改
project2 没有密码短语,而 project1 则有!想想也许这是相关的。
编辑2
我ssh-add -D
删除了所有加载的密钥,然后添加了 project1 的密钥,输入了密码并推送了密钥。有效。但是现在我的另一个身份不起作用,因为它的密钥没有被加载。
为什么我的多重身份不起作用?
答案 0 :(得分:0)
如果同一远程主机上的不同存储库需要使用不同的SSH标识,则必须使用SSH别名。
检查remote.origin.url
是否在本地存储库中包含以下(或等效)值:
git@bitbucket.org:accountX/project1.git
git@bitbucket.org:accountY/project2.git
accountX
可能是与您在Bitbucket上的第一个身份相关联的帐户(即project1_user
),也可能是已授予project1_user
访问其存储库project1
的其他帐户。 project2
也是如此。
现在,当git必须从本地存储库连接到远程存储库时,它首先必须连接到远程服务器,而后两个项目的设置都设置为bitbucket.org
。那么,git如何知道使用哪个SSH身份?它选择与bitbucket.org
相关联的某些身份。
更新remote.origin.url
设置,如下所示:
git@project1:accountX/project1.git
git@project2:accountY/project2.git
然后,当git被告知连接到git@project1
时,它会将project1
解析为~/.ssh/config
中的相应条目,并使用其中指定的标识。同样适用于project2
。
答案 1 :(得分:-1)
根据我的经验,您可以在这种情况下使用HTTPS节省大量时间和精力。
几个月前,我没有成功使用多个SSH身份。