GitHub:权限被拒绝(公钥)。致命:无法从远程存储库读取

GitHub: Permission denied (publickey). fatal: Could not read from remote repository

我在使用 GitHub 时遇到问题。我在玩 Git.

的远程存储库

当我现在尝试对远程目录进行任何更改时,即

git remote show origin

git push -u origin master

我收到这个错误

Permission denied (publickey). fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists. Ulrichs-MacBook-Pro:coredatatest ulrichheinelt$ git push -u origin master Permission denied (publickey). fatal: Could not read from remote repository.

如果我可以使用一个新的(空的)远程目录重新开始,我会很高兴。或者有什么办法可以解决这个错误?

这是我昨天开始使用 GitHub 的第一步... 非常感谢!

编辑 1

我的 设置在 https://github.com/UlliH/CoreDataTest/settings

...

编辑 2

高兴得太早:-(

设置SSH和GPG密钥后,错误依旧。 :-/

编辑 3

我觉得是这样,但还是一样...

  1. 使用 ssh-keygen -t rsa -b 4096 -C "your email" 生成 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.
  • 在您的 GitHub 个人资料上有一个 Edit Profile 按钮。
    它位于网页的右上角。
  • 按下它,你会看到左边的Personal Settings菜单。
  • 在该菜单中找到 SSH and GPG keys 选项并按它。
  • 您将看到 New SSH key 添加新密钥的选项。
  1. 确保您已正确命名 "public key" 和 "private key" 文件;与 "id_rsa" 和 "id_rsa.pub" 完全一样。您可以在 users/.ssh 文件夹中找到这些内容。

  2. 在GitHub中添加public键

  3. 重启终端(支持bash)并再次尝试克隆

如果您有存储库的写入权限,您应该可以进行这些更改。

根据经验(花了一个小时后),我在任何论坛上都找不到任何信息表明我们必须明确保留私有名称和 public 文件,如上所述。

编码愉快!

对我来说,我必须设置主机使用什么 SSH 密钥。 在您的本地计算机 SSH 文件夹中,通常在 ~/.ssh create/edit 下使用您喜欢的编辑器 vimgedit

vim ~/.ssh/config

并在 git HostHostName 和 ssh IdentityFile[= 中添加以下内容23=](你的ssh私钥文件路径):

Host gitlab.example.com
    HostName gitlab.example.com
    IdentityFile /home/YOURUSERNAME/.ssh/id_rsa
  1. 生成您的密钥

    ssh-keygen

  2. 可视化您的密钥

    ls ~/.ssh

    id_rsa id_rsa.pub

  3. 启动代理

    评估 `ssh-agent`

  4. 将您的密钥添加到代理

    ssh-add ~/.ssh/id_rsa

我的 ssh 连接遇到了同样的问题。我试图通过 ssh 来解决它,但找不到适用的解决方案。因此,在这种情况下,我将远程 URL 从 SSH 更改为 HTTPS。我使用了命令: $ git remote set-url origin https://github.com/USERNAME/REPOSITORY.git。 您可以看到您的遥控器 url 使用以下命令更改: $ git remote -v.

您可以在 Here

上找到更多详细信息

这会将您的远程 URL 更改为 HTTPS,因此您现在必须输入 GitHub 用户名和密码才能将您的项目推送到远程存储库。我知道 ssh 比 HTTPS 更容易,这意味着您不必输入用户名和密码,但如果您没有找到任何通过 ssh 修复它的解决方案,并且急于推动您的解决方案,这可能会有所帮助代码到你的仓库。

如果你们中有人在 Bitbucket 上遇到同样的问题,那么这里是解决方案:

问题:
------

演示@L90TQCLQ MINGW64 /u/works(大师) $ git 克隆 ssh://git@bitbucket.internal.abc.com:5449/rem/jenkinspipeline.git 克隆到 'jenkinspipeline'... git@bitbucket.internal.abc.com: 权限被拒绝(公钥)。 致命:无法从远程存储库读取

请确保您拥有正确的访问权限 并且存储库存在。

解法:
演示@L90TQCLQ MINGW64 /u/works(大师) $ cat < ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC99aqMXtBpVvCQb6mezTHsftC3CFY9VOpGaNmckmcTzXoOOWOheeM9V2NTrOWxpbE3UNdL/6ZnmPyv5EI2zPMPstVIP5jAqcmxOvGc2zxy4wHeGTgrP6UaXs2nLScV4E7+rmdaVtSsfOa1i+eU2eg4UnIJpRLtGD6N+hMKJXaXWpGfQ79USiPhPQKDGOz3PeEDggyvHs7HUzaKZpwEeIKYOSDXsvDwTJ6s5uQ30YfX3eoQbAis8TJeQejAmkuu62oSOs5zFJMSTAzakiyXW/xCUsLrnUSzxmBKO2BIA/tSTrqW/Gj0VhDniDFGwGz0K1NfLzfEJLWKvdB2EJWVFjEd demo.user@abc.com

转到:https://bitbucket.internal.abc.com/plugins/servlet/ssh/projects/REM/repos/jenkinspipeline/keys 1)添加密钥 Copy/paste 那里的 id_rsa.pub 键值:


完毕! 现在您可以克隆 git 存储库

KDemo@L90TQCLQ MINGW64 /u/works(大师) $ git 克隆 ssh://git@bitbucket.internal.abc.com:5449/rem/jenkinspipeline.git 克隆到 'jenkinspipeline'... 远程:枚举对象:1146,完成。 远程:计数对象:100% (1146/1146),完成。 远程:压缩对象:100% (987/987),完成。 远程:总计 1146(delta 465),重复使用 0(delta 0) 接收对象:100% (1146/1146), 149.53 KiB | 172.00 KiB/s,完成。 解析增量:100% (465/465),完成。

根据我使用 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 虚拟机(如果您使用的是虚拟机)and/or 主机。重启不止一次解决了我的问题。

On Windows 在 powershell 或命令提示符中使用 git 时出现问题。在 Windows 上使用 Git Bash 为我解决了这个问题,因为它允许 ssh-agent 在后台正确地 运行 并允许进行必要的 SSH 凭据转发工作。

按照 Git Bash 中 link 的说明对我有用:https://docs.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

对于 Windows 上的那些人,即使按照上述解决方案仍然无法解决这个问题。我按照这些使它工作。

  1. 转到 C:\Users.ssh 或在命令提示符下执行 cd 到此文件夹
  2. 在命令提示符中使用 ssh-keygen -t rsa -b 4096 -C "your email" 生成 SSH 密钥
  3. 第二步中的重要方面是将所有内容保留为默认值并且不添加密码。一直按回车直到生成密钥。我正在更改文件名并添加密码,但这种方式对我不起作用。将创建两个文件 id_rsa 和 id_rsa.pub
  4. type id_rsa.pubcat id_rsa.pub 的 linux 的输出复制到剪贴板
  5. 将此密钥粘贴到 git 或 bitbucket 帐户
  6. 下的 SSH 密钥中
  7. 关闭 CMD 并尝试使用 git 克隆现在它应该可以工作

*我没有使用 ssh-add id_rsa 因为它是将这个私钥 (id_rsa) 添加到保险库中

我之前通过在关键路径中添加以下文件解决了同样的问题。

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

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

Host *
     PubkeyAcceptedKeyTypes +ssh-rsa

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