无法推送到bitbucket,Permission denied(publickey)

时间:2013-07-14 21:17:08

标签: ssh bitbucket ssh-keys

我正在尝试将我的项目推到我的bitbucket上,一直在搞乱这个问题大约4天,通过无数的问题解决/页面/故障排除/教程。我不知所措,非常沮丧。我以前在不同的计算机上做过这个...无论如何,这里是我得到的代码/响应

~/dev/sample_app git push -u origin --all
The authenticity of host 'bitbucket.org (131.103.20.168)' can't be established.
RSA key fingerprint is 81:7b:2c:f5:6f:18:2b:7c:4b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)? 
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
~/dev/sample_app 

我在Mac上运行10.8.4。

所以取得了一点进展,最初没有.ssh文件夹,所以我在开始时创建了那条路,没有known_hosts文件,所以我跑了

ssh -T git@bitbucket.org

我选择了yes,这创建了一个known_hosts文件,当我再次尝试推送时,我得到了:

~/dev/sample_app git push -u origin --all
Permission denied (publickey).
fatal: Could not read from remote repository.

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

我的.ssh文件夹是700,内部的密钥都是600。

25 个答案:

答案 0 :(得分:34)

您可以在〜/ .ssh / config文件中设置IdentityFile标志文件,如下所示:

Host bitbucket.org
  IdentityFile ~/.ssh/id_rsa

运行时

ssh git@bitbucket.org

ssh客户端允许您选择从中读取RSA或DSA身份验证的身份(私钥)的文件。

SSH Client To Use Given Private Key ( identity file )

答案 1 :(得分:14)

这可能会让系统管理员惊恐地退缩,但在遇到这个问题后(Windows)我放弃了SSH并重新使用HTTPS。

首次将远程存储库添加到Git时,请使用HTTPS URL“git@bitbucket.org...”替换SSH引用“https://<username>@bitbucket.org”。

您必须每次都输入密码,但特别是在Windows不像* nix系列那样常用的Windows下,我认为与SSH的头痛相比,这是一个小小的不便。

答案 2 :(得分:14)

您可能正在使用ssh作为git origin url。尝试删除ssh原点

git remote rm origin

然后使用HTTPS网址添加新来源并尝试再次推送。

git remote add origin https://git@bitbucket.org/SOMETHING/SOMETHING.git
git push -u origin master

确保将来自bitbucket的网址粘贴为原点。

答案 3 :(得分:10)

就我的情况而言,在新的Ubuntu 16机器上,我丢失了~/.ssh文件夹中的文件,所以有用了:

  1. 转到文件夹~/.ssh
  2. 运行ssh-keygen并为您的文件命名,即id_rsa
  3. 运行cat ~/.ssh/id_rsa.pub | xclip -sel clip
    如果您错过xclip apt-get install xclip:)
  4. 转到(在url中将USERNAME更改为您的bitbucket用户名:))https://bitbucket.org/account/user/USERNAME/ssh-keys/
  5. 点击Add key并粘贴剪贴板中的密钥
  6. 魔术 - 它现在有效:)

答案 4 :(得分:7)

更可持续的解决方案是修改.bashrc(例如vi ~/.bashrc),然后将以下行添加到其中(替换密钥名称)

ssh-add ~/.ssh/YOUR_KEY

这将在您启动shell时自动加载密钥

答案 5 :(得分:5)

我在Linux(Ubuntu)中面临同样的问题。

我使用git中的设置解决了它:

git config --global user.name "Your Name"
git config --global user.email your.email@example.com

使用cat和SSH密钥将公钥打印到bitbucket.org:

$ cat ~/.ssh/id_rsa.pub

添加Bitbucket并推送存储库:

git remote add origin git@bitbucket.org:<username>/your repository name.git
git push -u origin --all

这就是全部!

答案 6 :(得分:4)

我遇到了与BitBucket类似的问题。在我的情况下,它只有在我发现我应该从git clone命令中删除sudo后才能修复!

根据Attlassian

  

你克隆,推送或拉动时不应该使用sudo ,因为   ssh-agent在用户级别而不是根级别上运行。

答案 7 :(得分:3)

使用git config --global user.name "My Name"设置git后 git config --global user.email myemail@x.com,我仍然遇到“Permission Denied,(publickey)错误”的问题。为了解决这个问题,我首先使用

生成了一个新的ssh标记
ssh-keygen

并用

复制它
pbcopy < ~/.ssh/YOUR_KEY

之后,我去了bitbucket.com,在我的设置中将其添加为新的SSH密钥。然后,我返回终端,用

添加新密钥
ssh-add ~/.ssh/YOUR_KEY.

我遇到的一个大问题是我错过了关键的ssh-add [key]命令。

答案 8 :(得分:2)

就我而言,发生此问题是因为我在 ~/.ssh 中有许多 ssh 密钥。我必须在 ~/.ssh/config 中创建一个 bitbucket.org 特定条目,如下所示:

Host bitbucket.org
    Hostname bitbucket.org
    IdentityFile <location-of-.ssh-directory>/bb-rsa
    IdentitiesOnly=yes

我的猜测是,由于我们在克隆时没有指定密钥,ssh 会尝试 ~/.ssh 中的所有密钥,bitbucket 将其视为黑客尝试并拒绝我们的 repo 克隆尝试。

答案 9 :(得分:1)

我喜欢这里的答案,但它们都错过了可能的根本原因。

使用命令:

ssh -T git@bitbucket.org 

用您自己的位桶主机替换bitbucket.org

如果您得到类似的答案:

此部署密钥具有对以下存储库的读取权限

团队名称/存储库名称

这就是为什么推送到存储库不起作用的原因。

您还可以在Bitbucket Web UI中再次检查,注意描述中的read-only access

enter image description here

希望这为相同的问题提供了不同的视角。

答案 10 :(得分:1)

如果any.ssh修复不起作用或您克隆为https,则可能存在验证问题。就我而言,我通过在克隆存储库时提供用户名和密码来解决此错误。当您在同一台计算机上使用多个帐户时,可能会发生此问题。

使用“ git clone https://username:password@github.com/username/repository.git”命令以及您的用户名和密码以及回购URL。

答案 11 :(得分:1)

检查是否存在现有的SSH密钥

ls -al ~/.ssh

复制SSH密钥

cat ~/.ssh/id_rsa.pub | pbcopy

将复制的SSH密钥添加到“Bitbucket设置”,“安全”,“SSH密钥”。

答案 12 :(得分:0)

尝试从bitbucket服务器中拉出时出现相同的错误。此答案对我https://stackoverflow.com/users/2957677/toby-mellor

有帮助

代替使用 sudo git pull origin branch_name

我更改为 git pull origin branch_name

这解决了我的问题

答案 13 :(得分:0)

如果您使用 Fedora 33+ 并使用 RSA 算法。使用更安全的算法,如 ECDSA 或 ED25519。

ssh-keygen -t ed25519 -C "your_email@example.com"

来源:https://confluence.atlassian.com/bitbucketserverkb/ssh-rsa-key-rejected-with-message-no-mutual-signature-algorithm-1026057701.html

答案 14 :(得分:0)

如果您的计算机中有多个键,请确保将位桶添加到列表中,例如下面的

.ssh/config
# Company account
Host company
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_accelya

# Personal account
Host personal
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_personal


# Personal account bitbucket
Host bitbucket
HostName bitbucket.org
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_personal_bitbucket

答案 15 :(得分:0)

如果您将SourceTree与Bitbucket一起使用,则下一个解决方案是

转到您的个人Bitbucket设置 进入应用密码并创建一个应用密码 授予应用密码的下一个权限:

Repositories (R-W-A-D)
Projects (R-W)
Pull request (R-W)

之后,保留生成的密码 尝试再次克隆您的仓库 将显示一个密码弹出窗口,输入生成的密码。 就是这样。

答案 16 :(得分:0)

在源代码树中,选择您的项目,然后单击鼠标右键,然后找到一个选项“转换为SSH”->修复->登录,这对我来说就解决了 enter image description here

答案 17 :(得分:0)

在我的情况下,我的问题是我尝试使用生成的腻子.ppk文件,无论我尝试了什么都没用。

最后,我发现它是错误的文件,我不得不将其导出,将其另存为id_rsa文件并加载,然后一切正常。

enter image description here

答案 18 :(得分:0)

在我的情况下,它解决了从目录

添加ssh密钥的问题
~/.ssh/id_rsa.pub
<{3>} bitbucket.org。我在网站上也将它命名为id_rsa.pub。

一开始我添加了另一个我为bitbucket创建的密钥并将其命名为。第一批远程操作有效但几天后请求被拒绝。

答案 19 :(得分:0)

我的问题与权限有关。

我的项目目录由root拥有,但我以ubuntu身份登录。如果我输入git命令,我会得到PERMISSION DENIED,例如git pull origin master,所以我使用了sudo git pull origin master

我已使用BitBucket从ubuntu注册了/home/ubuntu/.ssh/id_rsa.pub的SSH密钥。

但是,我正在使用sudo。所以使用的SSH密钥实际上是/home/root/.ssh/id_rsa.pub,这与BitBucket的不同。

我案例的解决方案

chown -R username_here:username_here project/folder/here

现在,如果您不添加sudo

,它应该可以正常工作

OR 提供BitBucket root的密钥

答案 20 :(得分:0)

确保已切换到终端上的正确用户。

在我的情况下,root用户不是在bitbucket设置面板上添加了ssh键的用户。使用sudo运行git使它从root用户运行,我自己的用户就是添加了密钥的用户。

答案 21 :(得分:0)

在Windows中,@ ftesaid的答案用于解决ssh连接测试的问题。顺便说一句,您可以添加-v以查看正在尝试的键(按名称)以及连接失败的原因。

然而,当推送到bitbucket时,使用git@bitbucket.org:user / repo.git,似乎主机不是精确的bitbucket.org所以我仍然得到许可被拒绝的问题。我通过(重新)将我的密钥命名为id_rsa来解决它们(这是在ssh测试中尝试的密钥名称)。

如果您有一个rsa密钥,则此方法有效。对于多个密钥,配置文件中的主机可能必须是

bitbucket.org:username

但我不确定这是不是

答案 22 :(得分:0)

这可能很明显,但我花了很多时间。

运行git remote -v 时检查目的地

在我的情况下,我完全设置了ssh键,但此命令的输出是:

origin get@github.com:USERNAME/REPOSITORY.git

(请注意 获取 而非 git

而不是

origin git@github.com:USERNAME/REPOSITORY.git

同样,这是一个非常特殊的情况,但如果您遇到问题,请务必仔细检查此系统的字符串。

您可以使用以下命令解决此问题:

git remote set-url origin git@github.com:USERNAME/REPOSITORY.git

答案 23 :(得分:0)

我遇到了一个类似的问题,我之前使用HTTPS访问存储库,并且必须通过设置这样的URL来切换到SSH;

git remote set-url origin ssh://git@bitbucket.org/...

答案 24 :(得分:0)

我认为bitbucket指令是最好的。检查ssh是否已安装,如果未安装

krasen@krasen-Lenovo-Y50-70:~$ ssh -v
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I xxxxx] [-i identity_file]
           [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port]
           [-Q cipher | cipher-auth | mac | kex | key]
           [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] [user@]hostname [command]

krasen@krasen-Lenovo-Y50-70:~$ ls -a ~/.ssh 
.  ..  google_compute_engine  google_compute_engine.pub  identity  identity.pub  known_hosts

krasen@krasen-Lenovo-Y50-70:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/krasen/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/krasen/.ssh/id_rsa.
Your public key has been saved in /home/krasen/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx krasen@krasen-Lenovo-Y50-70
The key's randomart image is:
+--[ RSA 2048]----+
|              .  |
|           xx x  |
|          xxxxx  |
|       xxxxxxxxx |
|      .xxxxxxxx  |
|       xxxxx     |
|     xxxxxxxxxxxx|
|    xxxxxxxxxxxxx|
|     xxxxxxxxxxx |
+-----------------+                                                                                                                                  
krasen@krasen-Lenovo-Y50-70:~$ ls -la ~/.ssh                                                                                                         
total 40
drwx------   2 krasen krasen 4096 Jun 29 14:30 .
drwxr-xr-x 110 krasen krasen 4096 Jun 29 13:00 ..
-rw-------   1 krasen krasen 1675 Mar 18  2015 google_compute_engine
-rw-r--r--   1 krasen krasen  409 Mar 18  2015 google_compute_engine.pub
-rw-------   1 krasen krasen 1679 Jun 29 13:15 identity
-rw-r--r--   1 krasen krasen  409 Jun 29 13:15 identity.pub
-rw-------   1 krasen krasen 1679 Jun 29 14:30 id_rsa
-rw-r--r--   1 krasen krasen  409 Jun 29 14:30 id_rsa.pub
-rw-r--r--   1 krasen krasen 4698 Jun 29 13:16 known_hosts

krasen@krasen-Lenovo-Y50-70:~$ ssh-agent /bin/bash

检查代理是否已启动

krasen@krasen-Lenovo-Y50-70:~$ ps -e | grep [s]sh-agent 
26503 ?        00:00:00 ssh-agent
krasen@krasen-Lenovo-Y50-70:~$ ssh-add ~/.ssh/id_rsa
Identity added: /home/krasen/.ssh/id_rsa (/home/krasen/.ssh/id_rsa)
krasen@krasen-Lenovo-Y50-70:~$ ssh-add -l 
2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx /home/krasen/.ssh/id_rsa (RSA)
krasen@krasen-Lenovo-Y50-70:~$ cat ~/.ssh/id_rsa.pub
ssh-rsa xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

获取此密钥并将其添加为bitbucket设置中的密钥

相关问题