无法通过 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 在您的本地存储库中是否具有以下(或等效)值:

项目1git@bitbucket.org:accountX/project1.git 项目2git@bitbucket.org:accountY/project2.git

accountX 可能是与您在 Bitbucket 上的第一个身份相关联的帐户(即project1_user),也可能是另一个已授予对project1_user 对其存储库project1 的访问权限的帐户。 project2 也是如此。

现在,当 git 必须从您的本地存储库连接到远程存储库时,它首先必须连接到远程服务器,并且您的两个项目的后者都设置为 bitbucket.org。那么,git 是如何知道使用哪个 SSH 身份的呢?它选择与bitbucket.org 关联的一些 身份。

如下更新您的remote.origin.url 设置:

项目1git@project1:accountX/project1.git 项目2git@project2:accountY/project2.git

然后,当 git 被告知连接到 git@project1 时,它会将 project1 解析为 ~/.ssh/config 中的相应条目并使用其中指定的身份。 project2 也是如此。

【讨论】:

Bitbucket 中的 repos 存储在“Teams”中。所以 project1git config --get remote.origin.urlgit@bitbucket.org:team/project1.gitproject2 也是如此。回购路径设置正确。你读过Edit 2吗? 我的回答同样适用于“团队”案例。然而,我更新了它。 你能试试git clone project1:accountX/project1.gitgit clone project2:accountY/project2.git吗?【参考方案2】:

根据我的经验,在这种情况下使用 HTTPS 可以为自己节省大量时间和精力。

几个月前我不会成功使用多个 SSH 身份。

【讨论】:

以上是关于无法通过 SSH 连接到我的 Bitbucket 存储库 - conq:存储库访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

BitBucket Webhook - 无法连接到 Jenkins URL

使用 Bitbucket Pipelines 从 docker 实例 SSH 到登台机器

如何以不同用户的身份自动连接到 Bitbucket 以获取不同的存储库? [复制]

无法通过 SSH 连接到家用计算机 [关闭]

使用ssh连接到远程git仓库

无法通过 python 中的 ssh 隧道连接到远程数据库