GitHub:拒绝访问(公钥)。致命错误:无法从远程仓库读取

79

我在使用GitHub时遇到麻烦。我一直在尝试使用一个远程Git存储库。

现在,当我试图对远程目录进行任何更改时,出现了问题。

git remote show origin
或者
git push -u origin master

我遇到了这个错误

拒绝访问(publickey)。 致命错误:无法从远程仓库读取。

请确保您拥有正确的访问权限并且仓库存在。 Ulrichs-MacBook-Pro:coredatatest ulrichheinelt$ git push -u origin master 拒绝访问(publickey)。 致命错误:无法从远程仓库读取。

如果能够重启一个新的(空)远程目录,我将很高兴。或者有没有办法修复这个错误?

这是我昨天开始使用GitHub的第一步...

编辑1

我的设置

...

编辑2

过早地感到高兴了 :-(

在设置了SSH和GPG密钥之后,错误仍然相同。 :-/

编辑3

我认为是这样的,但还是一样的...

enter image description here


正如@Flair所建议的,他的答案是正确的。 - undefined
17个回答

76
  1. 使用命令 ssh-keygen -t rsa -b 4096 -C "你的邮箱" 生成 SSH 密钥。
  2. cat ~/.ssh/id_rsa.pub 命令的输出复制到剪贴板中。
  3. 将上述复制的输出粘贴到https://github.com/settings/ssh/new表单中。
  4. 接着,重新尝试生成初始致命错误的操作。

更新:如果您仍然遇到 "ssh: connect to host github.com port 22: Connection timed out" 错误,请按照以下步骤进行。

检查连接,大多数情况下会超时。

$ ssh -T git@github.com
ssh: connect to host github.com port 22: Connection timed out

通过提供可选参数端口来检查相同之处

$ ssh -T -p 443 git@ssh.github.com
Hi <user_name>! You've successfully authenticated, but GitHub does not provide shell access.

更新SSH设置

$ vim ~/.ssh/config
# Add github in the know hosts
Host github.com
  Hostname ssh.github.com
  Port 443

检查连接,大多数情况下这次会连接成功

$ ssh -T git@github.com
Hi <user_name>! You've successfully authenticated, but GitHub does not
provide shell access.

36
  • 在您的GitHub个人资料页面上,有一个 编辑个人资料 按钮。
    它位于网页右上角。
  • 点击该按钮,您会看到左侧的 个人设置 菜单。
  • 在该菜单中找到 SSH 和 GPG 密钥 选项并点击。
  • 您会看到 新的 SSH 密钥 选项以添加新密钥。

请抽出时间查看此线程上的答案和评论 - https://dev59.com/UGcs5IYBdhLWcg3wVyel - Evgeny Karkan
更新/重置SSH密钥后,问题仍然停留在以下内容:debug3: send packet: type 30 debug1: expecting SSH2_MSG_KEX_ECDH_REPLY - Vladimir Ch

32
  1. 生成你的密钥

    ssh-keygen

  2. 查看你的密钥

    ls ~/.ssh

    id_rsa id_rsa.pub

  3. 启动代理

    eval `ssh-agent`

  4. 将你的密钥添加到代理中

    ssh-add ~/.ssh/id_rsa


10

对于我来说,我必须设置使用哪个主机以及使用哪个SSH密钥。

在本地机器的SSH文件夹中,通常位于~/.ssh下,创建/编辑名为config的文件,可以使用您喜欢的编辑器,如vimgedit

vim ~/.ssh/config

添加以下内容到您的git中:Host, HostName和ssh IdentityFile(您的SSH私钥文件路径):

Host gitlab.example.com
    HostName gitlab.example.com
    IdentityFile /home/YOURUSERNAME/.ssh/id_rsa

在设置了SSH密钥并将其设置为配置文件后,仍然出现相同的问题:“debug1:expecting SSH2_MSG_KEX_ECDH_REPLY”。 - Vladimir Ch
这个有效了,其他什么都没用。 - user2906838

8

我遇到了与SSH连接相关的问题,我尝试使用SSH解决它,但是并没有找到有效的解决方案。所以,在这种情况下,我将我的远程URL从SSH更改为HTTPS。我使用了以下命令:

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

您可以使用以下命令查看远程URL是否更改:

$ git remote -v

您可以在此处找到更多详细信息。

这将把您的远程URL更改为HTTPS,因此您现在需要键入GitHub用户名和密码才能将项目推送到远程存储库。我知道SSH比HTTPS更容易,因为您无需输入用户名和密码,但如果您无法通过SSH找到任何解决方案,并且急于将代码推送到您的存储库,则此方法可能会有所帮助。


如果微软不打算删除该功能,那么这将是一个好的建议。 - DemiImp

7

macOS Ventura不再支持RSA。因此,如果您的密钥是RSA,则需要生成另一个密钥。

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

这个答案太棒了! - David Manpearl

4

对于那些在 Windows 上即使按照上述解决方案仍然无法解决问题的人。我按照以下步骤使其正常工作:

  1. 打开终端并 CD 到 C:\Users\"你的用户名"
  2. 在命令提示符中使用 ssh-keygen -t rsa -b 4096 -C "你的电子邮件" 生成 SSH 密钥
  3. 第二步中的重要方面是将所有内容保留默认值,不添加任何密码。一直按 Enter 直到生成密钥。我曾尝试更改文件名和添加密码,但这种方法不起作用。会创建两个文件,即 id_rsa 和 id_rsa.pub
  4. CD 到 C:\Users\"你的用户名"\.ssh>
  5. 复制 type id_rsa.pub 或 Linux 中的 cat id_rsa.pub 的输出到剪贴板
  6. 将此密钥粘贴到 Git 或 Bitbucket 帐户下的 SSH 密钥中
  7. 关闭 CMD 并尝试使用 git clone,现在应该可以了

*我没有使用 ssh-add id_rsa,因为这是将此私钥(id_rsa)添加到一个保险库中的操作。


4

我曾经通过在密钥路径中添加下面的文件来解决相同的问题。

我使用git bash(ssh-keygen)创建了密钥,这自动将密钥保存到C:\Users\{username}\.ssh文件夹中。

然后我创建了一个没有扩展名的文件“config”,并添加了以下代码:

Host *
     PubkeyAcceptedKeyTypes +ssh-rsa

现在,尝试使用 git clone 命令再次克隆。


2

1
在我使用git和linux的短暂经验中,我发现有两个简单的答案可以解决这个错误。
按照以下顺序运行这些命令。
git remote set-url --add origin <https://github.com/username/repo>
git remote set-url --delete origin <git@github.com:username/repo>

这将重新配置您的配置文件,使用HTTPS原点而不是SSH。
现在尝试运行推送或拉取命令。 或者 重新启动您的Linux虚拟机(如果您正在使用)和/或主机。重新启动已经多次解决了我的问题。

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