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

jos*_*eon 58 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 
Run Code Online (Sandbox Code Playgroud)

我在Mac上运行10.8.4.

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

ssh -T git@bitbucket.org
Run Code Online (Sandbox Code Playgroud)

我选择了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.
Run Code Online (Sandbox Code Playgroud)

我的.ssh文件夹是700,内部的键都是600.

cyb*_*b0k 41

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

Host bitbucket.org
  IdentityFile ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

当你跑步

ssh git@bitbucket.org
Run Code Online (Sandbox Code Playgroud)

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

SSH客户端使用给定私钥(身份文件)


Ron*_*bet 23

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

git remote rm origin
Run Code Online (Sandbox Code Playgroud)

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

git remote add origin https://git@bitbucket.org/SOMETHING/SOMETHING.git
git push -u origin master
Run Code Online (Sandbox Code Playgroud)

确保将来自bitbucket的url粘贴为origin.

  • 这是自然的解决方案,但我总是忘记 (2认同)
  • 它起作用了-允许我使用URL而不是ssh进行访问-这就是为什么起作用的原因。如果您可以通过ssh访问帐户中的其他存储库,则仅使用ssh链接而不使用https链接 (2认同)

小智 17

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

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

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


pba*_*ski 12

在我的情况下,在新的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并粘贴剪贴板中的键

魔术 - 它现在有效:)

  • 对于 Windows;`C:\Users\&lt;用户名&gt;\.ssh`(将 **&lt;用户名&gt;** 替换为您的 **用户名**)。下载“Git Bash”,它允许“ssh-keygen”和许多其他功能,可以在此处下载 &gt;&gt; https://git-scm.com/download/win。 (2认同)

kea*_*ala 9

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

ssh-keygen
Run Code Online (Sandbox Code Playgroud)

并复制它

pbcopy < ~/.ssh/YOUR_KEY
Run Code Online (Sandbox Code Playgroud)

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

ssh-add ~/.ssh/YOUR_KEY.
Run Code Online (Sandbox Code Playgroud)

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


iTe*_*ech 8

更可持续的解决方案是编辑.bashrc(例如vi ~/.bashrc)然后添加以下行(替换密钥名称)

ssh-add ~/.ssh/YOUR_KEY

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


Joy*_*cat 8

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

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

查看bitbucket 支持以获取更多详细信息

原因

由于各种安全漏洞,RSA 算法很快就在操作系统和 SSH 客户端中被弃用,其中许多技术现在完全拒绝使用该算法。

(info) 例如 - 这是 OpenSSH 关于即将弃用 ssh-rsa 算法的公告。如果您使用的操作系统或 SSH 客户端的版本禁用了此算法,则这些技术可能不再接受之前使用此算法生成的任何 SSH 密钥。

解决

为了完全解决此问题,我们的团队建议使用受支持且更安全的算法(例如 ECDSA 和 ED25519)重新生成这些已弃用的密钥


小智 5

我在Linux(Ubuntu)中也遇到了同样的问题。

我使用安装程序解决了它git

git config --global user.name "Your Name"
git config --global user.email your.email@example.com
Run Code Online (Sandbox Code Playgroud)

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

$ cat ~/.ssh/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)

添加Bitbucket并增加存储库:

git remote add origin git@bitbucket.org:<username>/your repository name.git
git push -u origin --all
Run Code Online (Sandbox Code Playgroud)

就这样!


Ima*_*ghi 5

我在BitBucket上也遇到了类似的问题。就我而言,它只有在我发现我应该从git clone命令中删除sudo后才修复!

根据Attlassian

不应该使用sudo克隆时,推,或拉,因为用户级别的ssh-agent运行,而不是根本的水平。


小智 5

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

Host bitbucket.org
    Hostname bitbucket.org
    IdentityFile <location-of-.ssh-directory>/bb-rsa
    IdentitiesOnly=yes
Run Code Online (Sandbox Code Playgroud)

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