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

时间:2016-06-26 12:17:10

标签: git authentication ssh bitbucket ssh-keys

我已经跟踪了一百万关于此的指南,我无法让它发挥作用。早些时候,我成功地通过SSH推送到我的私人Bitbucket git存储库,现在突然它不会工作。

我用新密码重新创建了密钥,将其添加到我的Bitbucket设置中,它无法正常工作。

好的,这是我采取的步骤:

  1. 删除旧密钥对(project1和project1.pub)
  2. 使用此命令ssh-keygen -f ~/.ssh/project1 -C "project1"
  3. 重新创建它
  4. 在我的两个 Bitbucket帐户的config文件中创建了~/.ssh,其中包含以下内容:
  5. Host project1 HostName bitbucket.org IdentityFile ~/.ssh/project1 Host project2 HostName bitbucket.org IdentityFile ~/.ssh/project2

    1. 抓取project1.pub的内容,并在我的Bitbucket帐户中创建了一个新的SSH密钥条目。
    2. 在我的ssh-agent插件列表中添加~/.zshrc,如下所示:plugins=(git ssh-agent)并重新启动终端
    3. ssh-add -l并且只看到project2已加载
    4. ssh-add ~/.ssh/project1输入了我的密码和成功,就像这样:
    5. 2048 SHA256:THESHA256 /Users/myuser/.ssh/project2 (RSA) 2048 SHA256:THESHA256 /Users/myuser/.ssh/project1 (RSA)

      1. 重新启动终端并执行了ssh-add -l并列出了两个条目
      2. 去了我的项目并做了git push,它告诉我我无法访问。
      3. 当我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 的密钥,输入了密码并推送了密钥。有效。但是现在我的另一个身份不起作用,因为它的密钥没有被加载。

        为什么我的多重身份不起作用?

2 个答案:

答案 0 :(得分:0)

如果同一远程主机上的不同存储库需要使用不同的SSH标识,则必须使用SSH别名。

检查remote.origin.url是否在本地存储库中包含以下(或等效)值:

  • project1 git@bitbucket.org:accountX/project1.git
  • project2 git@bitbucket.org:accountY/project2.git

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

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

更新remote.origin.url设置,如下所示:

  • project1 git@project1:accountX/project1.git
  • project2 git@project2:accountY/project2.git

然后,当git被告知连接到git@project1时,它会将project1解析为~/.ssh/config中的相应条目,并使用其中指定的标识。同样适用于project2

答案 1 :(得分:-1)

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

几个月前,我没有成功使用多个SSH身份。