无法通过 SSH 连接到我的 Bitbucket 存储库 - conq:存储库访问被拒绝
Posted
技术标签:
【中文标题】无法通过 SSH 连接到我的 Bitbucket 存储库 - conq:存储库访问被拒绝【英文标题】:Can't SSH into my Bitbucket repository - conq: repository access denied 【发布时间】:2016-10-28 13:14:12 【问题描述】:我已经遵循了一百万条关于这方面的指南,但我无法让它发挥作用。之前我通过 SSH 成功推送到我的私有 Bitbucket git 仓库,现在突然不行了。
我使用新密码重新创建了密钥,并将其添加到我的 Bitbucket 设置中,但它无法正常工作。
好的,这是我采取的步骤:
-
已删除旧密钥对(project1 和 project1.pub)
使用此命令重新创建它
ssh-keygen -f ~/.ssh/project1 -C "project1"
为我的两个 Bitbucket 帐户在~/.ssh
文件中创建了一个config
,内容如下:
Host project1
HostName bitbucket.org
IdentityFile ~/.ssh/project1
Host project2
HostName bitbucket.org
IdentityFile ~/.ssh/project2
-
抓取
project1.pub
的内容并在我的Bitbucket 帐户中创建一个新的SSH 密钥条目。
在我的~/.zshrc
插件列表中添加了ssh-agent
,如下所示: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 做了身份创建步骤,但我很确定它也不起作用。
我遵循的指南:
https://confluence.atlassian.com/bitbucket/configure-multiple-ssh-identities-for-gitbash-mac-osx-linux-271943168.html
编辑
project2 没有密码,而 project1 有!只是觉得这可能是相关的。
编辑 2
我使用ssh-add -D
删除了所有加载的密钥,然后添加了 project1 的密钥,输入密码并推送。有效。但是现在我的另一个身份无法正常工作,因为它的密钥没有加载。
为什么我的多重身份不起作用?
【问题讨论】:
两个项目的git config --get remote.origin.url
输出什么?
【参考方案1】:
如果同一远程主机上的不同存储库需要使用不同的 SSH 身份,那么您必须使用 SSH 别名。
检查 remote.origin.url
在您的本地存储库中是否具有以下(或等效)值:
git@bitbucket.org:accountX/project1.git
项目2: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
项目2:git@project2:accountY/project2.git
然后,当 git 被告知连接到 git@project1
时,它会将 project1
解析为 ~/.ssh/config
中的相应条目并使用其中指定的身份。 project2
也是如此。
【讨论】:
Bitbucket 中的 repos 存储在“Teams”中。所以 project1 的git config --get remote.origin.url
是 git@bitbucket.org:team/project1.git
,project2 也是如此。回购路径设置正确。你读过Edit 2吗?
我的回答同样适用于“团队”案例。然而,我更新了它。
你能试试git clone project1:accountX/project1.git
和git clone project2:accountY/project2.git
吗?【参考方案2】:
根据我的经验,在这种情况下使用 HTTPS 可以为自己节省大量时间和精力。
几个月前我不会成功使用多个 SSH 身份。
【讨论】:
以上是关于无法通过 SSH 连接到我的 Bitbucket 存储库 - conq:存储库访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
BitBucket Webhook - 无法连接到 Jenkins URL
使用 Bitbucket Pipelines 从 docker 实例 SSH 到登台机器