Bitbucket拒绝了SSH公钥,但他们的SSH测试没有问题。

16

一个很可能相关的信息是,我已经为bitbucket设置了自定义ssh配置。在我的'.ssh/config'文件中,我有以下内容:

[ivanna@comp]$ cat ~/.ssh/config 
Host bitbucket
    Hostname        bitbucket.org
    IdentityFile    /home/ivanna/.ssh/id_rsa_bitbucket
    IdentitiesOnly yes

就ssh而言,此文件的权限肯定是正确的(我在配置文件中积极使用其他条目)。现在,当我在git中添加远程源时,我使用的是bitbucket而不是bitbucket.org:

git remote add origin bitbucket:ivanna/my-repo.git

但是当我尝试进行推送时,出现了以下错误:
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

看起来我没有添加我的公钥或者什么的,对吧?但我肯定已经添加了。当你搜索更多信息时,你会发现这个错误页面(https://confluence.atlassian.com/pages/viewpage.action?pageId=302811860)。当我按照他们说的检查密钥时:

[ivanna@comp]$ ssh -T hg@bitbucket
logged in as ivanna.

You can use git or hg to connect to Bitbucket. Shell access is disabled.

它似乎可以成功登录。那么为什么推送不起作用呢?上面的链接提到可能是项目本身的权限问题,但我按照建议设置了权限却没有任何作用。有人知道发生了什么吗?

3个回答

15
ssh -T hg@bitbucket

当通过SSH登录时,您使用hg@bitbucket,但在添加到Git的远程URL中,您没有指定用户名。由于配置也不包括用户名,因此Git不知道要使用哪个用户名进行登录。

将URL更改为以下内容:

git remote add origin git@bitbucket:ivanna/my-repo.git

或者,您可以将用户添加到SSH配置中:

Host bitbucket
    Hostname        bitbucket.org
    User            git
    IdentityFile    /home/ivanna/.ssh/id_rsa_bitbucket
    IdentitiesOnly yes

1
谢谢,那真是尴尬。 - Ivanna

4
如果您这样做:
git remote add origin bitbucket:ivanna/my-repo.git

您还没有告诉git以不同于您的用户名的身份连接。您可以在.ssh/config文件中进行如下设置:

Host bitbucket
    User git
    Hostname        bitbucket.org
    IdentityFile    /home/ivanna/.ssh/id_rsa_bitbucket
    IdentitiesOnly yes

或者在您的git remote add命令行中输入如下内容:

git remote add origin git@bitbucket:ivanna/my-repo.git

1
好的,这是 git@,他正在使用的是 git 而不是 hg - Will
如果你去阅读问题(带有Bitbucket的输出),你会发现两者都可以工作。由于OP在问题中使用了hg@,所以我坚持使用它。我同意这很令人困惑。我将更新答案。 - larsks
啊,我明白了。谢谢你的澄清! - Will

0
在我的情况下,我尝试了所有的解决方案,但仍然在Bitbucket上遇到了权限被拒绝的错误。然后我只是将公钥和私钥文件都复制到了.ssh文件夹中。最终,它可以正常工作了。

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