Git和Bitbucket:推送时未经授权

50

我在BitBucket中创建了一个仓库并使用SSH克隆了它。当尝试将我的更改push到BitBucket时,我收到以下错误:

未授权

致命错误:无法从远程存储库读取。

我使用ssh-keygen创建了一个SSH密钥,并将生成的公钥复制到了BitBucket中。我下载了SourceTree,看看是否有一些工具可以帮助解决问题,但它也遇到了同样的问题。

我已经试图修复这个问题几个小时了,不想再浪费时间。令人惊讶的是,在谷歌搜索时,我找不到任何遇到类似问题或相同错误信息的人。

请帮忙!我正在Mac OS X上运行,并尝试从Keychain Access中删除GitHub凭据,但这并没有解决问题。有人知道我可能做错了什么吗?

更新

我已经使用完全相同的客户端配置与GitHub配合运作,并且没有遇到任何问题,因此我怀疑是我缺少了一些在BitBucket上的配置。


Git remote show origin 也许是一样的吧?也许可以看看 git config --list --show-origin... - Christoph
我在寻找什么?我看到 remote.origin.url=git@bitbucket.org:meansoft/interoffice.git,我认为这是正确的。 - serlingpa
有credential.helper吗?https://help.github.com/en/articles/updating-credentials-from-the-osx-keychain或https://www.testingexcellence.com/install-git-mac-generate-ssh-keys/。 - Christoph
你验证了你的ssh设置了吗?请参见“步骤4。9”在https://confluence.atlassian.com/bitbucket/set-up-ssh-for-git-728138079.html#SetupanSSHkey-ssh? - joran
我也做过那个。 - serlingpa
显示剩余2条评论
4个回答

159

我遇到了同样的问题并解决了它。

我的问题是,我将生成的公共SSH密钥添加到了仓库本身,通过该仓库的“设置”选项。

解决方案是从仓库本身中删除SSH密钥。点击您的帐户,在您的帐户的“设置”中添加SSH密钥。


从仓库中删除ssh密钥后,BitBucket会弹出这个消息,不允许我将同一密钥添加到我的配置文件/BitBucket设置中:“某人已将该密钥作为访问密钥添加到仓库中。” - Ulysses Alves
1
这些设置被隐藏在账户个人资料图标下面 > 个人设置然后安全 > SSH密钥。 - jobwat
那么,仓库特定的SSH密钥有什么用途呢? - Kyle
位置:点击设置图标(右上角)> 个人Bitbucket设置 > SSH密钥 - rommyarb
解决了我的问题! - undefined

89

9
哦,天啊!我不知道是抱你还是打自己。嘿,@serlingpa,请将此回答设为“最佳答案”! - Frazer
1
使用 ssh -T git@bitbucket.org 命令来测试你的密钥。在我的情况下,当我删除了所有使用与我的个人资料 ssh 密钥相同的密钥的 repo 后,问题得到了解决。 - Orange
为什么这个答案没有被接受? - Rex Bengil

1
我曾遇到相同的问题,但是我的解决方案略有不同:
  1. 通过 ssh-keygen -t rsa 创建新的RSA密钥对,如果需要,可以为其设置密码。
  2. 然后使用 ssh-add ~/.ssh/<your_private_rsa_key> 将SSH密钥添加到ssh-agent中。
  3. 将此RSA密钥添加到您的bitbucket账户 Bitbucket -> Your Profile -> SSH Keys。
  4. 使用 ssh -T git@bitbucket.org 登录到bitbucket。
这些步骤解决了我的问题。

0
你可以检查一下是否使用了HTTPS或SSH克隆存储库。假设你正在使用SSH,你可以尝试在~/.ssh/config中明确设置你的ssh客户端配置,并定义要使用的主机/私钥:
Host <bitbucket host>
  IdentityFile <path to ssh private key>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接