无法通过SSH连接到我的Bitbucket存储库 - conq:存储库访问被拒绝

8 浏览
0 Comments

无法通过SSH连接到我的Bitbucket存储库 - conq:存储库访问被拒绝

我按照无数个指南进行了尝试,但是无法使其工作。早先,我成功地通过SSH将代码推送到了我的私有Bitbucket git存储库,但现在突然间无法工作了。

我已经重新创建了带有新密码的密钥,并将其添加到了我的Bitbucket设置中,但仍然无法工作。

好吧,以下是我所采取的步骤:

1. 删除了旧的密钥对(project1和project1.pub)。

2. 使用以下命令重新创建了密钥对:ssh-keygen -f ~/.ssh/project1 -C "project1"

3. 在~/.ssh目录下创建了config文件,用于我的两个Bitbucket账户,内容如下:

Host project1
 HostName bitbucket.org
 IdentityFile ~/.ssh/project1
Host project2
 HostName bitbucket.org
 IdentityFile ~/.ssh/project2

4. 获取了project1.pub文件的内容,并在我的Bitbucket账户中创建了一个新的SSH密钥条目。

5. 在我的~/.zshrc插件列表中添加了ssh-agent,如下所示:plugins=(git ssh-agent),并重新启动了终端。

6. 运行ssh-add -l,发现只加载了project2

7. 运行ssh-add ~/.ssh/project1,输入我的密码,成功加载,结果如下:

2048 SHA256:THESHA256 /Users/myuser/.ssh/project2 (RSA)
2048 SHA256:THESHA256 /Users/myuser/.ssh/project1 (RSA)

8. 重新启动终端,运行ssh-add -l,显示了两个条目。

9. 进入我的项目,运行git push,告诉我没有权限访问。


当我运行ssh -T git@bitbucket.com时,它告诉我我已使用project2的用户名登录。

登录为project2_user。

我的系统是OS X 10.11.5

我从来没有解决过在我的电脑上使用多个身份,一直使用HTTPS,但现在我需要通过SSH使一切更加安全,这也可以让我的账户启用双因素身份验证。因此,现在必须使用SSH,而我不知道该怎么办。

附:我也为project2创建了身份,但我相当肯定它也不起作用。


我遵循的指南链接:

https://confluence.atlassian.com/bitbucket/configure-multiple-ssh-identities-for-gitbash-mac-osx-linux-271943168.html


编辑

project2没有密码,而project1有!刚才想到这可能与问题相关。

编辑2

我运行了ssh-add -D来移除所有加载的密钥,然后添加了project1的密钥,输入密码并进行推送。它工作了。但是现在我的另一个身份不工作了,因为它的密钥没有被加载。

为什么我的多个身份无法正常工作?

0
0 Comments

在这种情况下,根据我的经验,你可以节省很多时间和精力,使用HTTPS来解决问题。

几个月前,我尝试使用多个SSH身份验证,但没有成功。

0
0 Comments

问题出现的原因是在同一远程主机上的不同存储库需要使用不同的SSH身份验证。解决方法是使用SSH别名,并更新远程存储库的URL设置。

首先,检查本地存储库中的remote.origin.url设置是否正确。确保project1的URL为git.org:accountX/project1.gitproject2的URL为git.org:accountY/project2.git

然后,更新remote.origin.url设置。将project1的URL更改为git:accountX/project1.git,将project2的URL更改为git:accountY/project2.git

通过这样的设置,当git需要连接到远程存储库时,它首先连接到远程服务器,而远程服务器对于这两个项目来说都是bitbucket.org。那么git如何知道要使用哪个SSH身份验证呢?它选择与bitbucket.org关联的某个身份验证。

通过将remote.origin.url设置为git:accountX/project1.gitgit:accountY/project2.git,当git被告知要连接到git时,它会在~/.ssh/config中查找对应的条目,并使用其中指定的身份验证。这样就可以为不同的存储库使用不同的SSH身份验证了。

另外需要注意的是,Bitbucket上的存储库是存储在"Teams"中的。所以project1project2的URL可能是git.org:team/project1.gitgit.org:team/project2.git。但是解决方法同样适用于"Teams"的情况,只需要相应地更新URL设置即可。

最后,可以尝试使用git clone project1:accountX/project1.gitgit clone project2:accountY/project2.git命令来进行克隆操作,验证问题是否解决。

0