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

时间:2016-07-24 19:49:40

标签: git github git-remote

我在使用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

https://github.com/UlliH/CoreDataTest/settings

我的设置

...

修改2

太早开心: - (

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

编辑3

我认为这是正确的,但仍然是一样的......

enter image description here

11 个答案:

答案 0 :(得分:14)

  • GitHub个人资料中,有一个Edit Profile按钮 它位于网页的右上角。
  • 按下它,您将看到左Personal Settings菜单。
  • 在该菜单中找到SSH and GPG keys选项并按下它。
  • 您会看到一个选项New SSH key来添加新密钥。

答案 1 :(得分:12)

  1. 使用ssh-keygen -t rsa -b 4096 -C "your_email@foo.com"生成SSH密钥。
  2. 复制cat id_rsa.pub
  3. 的输出
  4. 将以上复制的outpur粘贴到Github profile -> Settings -> SSH and GPG Keys -> Add new SSH key

答案 2 :(得分:3)

  1. 生成密钥

    SSH-密钥生成

  2. 可视化您的密钥

    ls~ / .ssh

    id_rsa id_rsa.pub

  3. 启动座席

    eval ssh-agent

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

    ssh-add~ / .ssh / id_rsa

答案 3 :(得分:2)

对我来说,我必须设置什么主机使用什么SSH密钥。 在本地计算机SSH文件夹中,通常在~/.ssh下使用首选编辑器创建/编辑名为config的文件,例如 vim gedit

vim ~/.ssh/config

并在您的git 主机 HostName 和ssh IdentityFile (您的ssh私钥文件路径)中添加以下内容:

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

答案 4 :(得分:1)

在 Windows 上,我在 powershell 或命令提示符下使用 git 时遇到了问题。在 Windows 上使用 Git Bash 为我解决了这个问题,因为它允许 ssh-agent 在后台正常运行,并允许转发 SSH 凭据以使其正常工作。

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

答案 5 :(得分:0)

  1. 确保您已将"公钥命名为#34;和#34;私钥"文件正确;就像" id_rsa"和" id_rsa.pub"。这是您可以在users / .ssh文件夹中找到的内容。

  2. 在GitHub中添加公钥

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

  4. 如果您拥有对repo的写入权限,那么您应该更好地了解这些更改。

    根据经验(花了一个小时后),我找不到任何论坛上的任何信息,表明我们必须明确保留上面提到的私人和公共文件的名称。

    快乐的编码!

答案 6 :(得分:0)

我的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修复它的任何解决方案,这可能会有所帮助,并且您急于推动您的代码到您的仓库。

答案 7 :(得分:0)

如果您在Bitbucket上遇到相同类型的问题,那么以下是解决方法:

问题:
------

演示@ L90TQCLQ MINGW64 / u / works(主) $ git clone 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)添加密钥 将id_rsa.pub键值复制/粘贴到此处:

enter image description here
做完了! 现在您可以克隆git仓库了

KDemo @ L90TQCLQ MINGW64 / u / works(主) $ git clone ssh://git@bitbucket.internal.abc.com:5449 / rem / jenkinspipeline.git 克隆到“ jenkinspipeline”中... remote:枚举对象:1146,完成。 远程:计数对象:100%(1146/1146),已完成。 远程:压缩对象:100%(987/987),已完成。 远程:总计1146(增量465),已重用0(增量0) 接收物体:100%(1146/1146),149.53 KiB | 172.00 KiB / s,已完成。 解析增量:100%(465/465),已完成。

答案 8 :(得分:0)

对于那些使用 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.pub 的输出复制到剪贴板
  5. 将此密钥粘贴到 git 或 bitbucket 帐户下的 SSH 密钥中
  6. 关闭 CMD 并立即尝试使用 git clone,它应该可以工作

*我没有使用 ssh-add id_rsa,因为它已完成将此私钥 (id_rsa) 添加到保险库中

答案 9 :(得分:-1)

以我在Linux上使用git的短暂经验,我发现有两个简单的答案可以解决此错误。

按此顺序运行这些命令

git remote set-url --add origin <https://github.com/username/repo>
git remote set-url --delete origin <git@github.com:username/repo>

这会将您的配置文件重新配置为使用HTTPS起源而不是SSH。

现在尝试运行推或拉命令。

OR

重新引导Linux VM(如果使用的是)和/或主机。重新启动已经多次为我解决了这个问题。

答案 10 :(得分:-2)

我浪费了很多时间后得到了它......

Shravan40 接受的答案中,一切都还可以,但是我在github.com上添加了一个新的存储库,添加了一个新的README.md,这导致了错误

 ERROR: Repository not found.
 fatal: Could not read from remote repository.
 Please make sure you have the correct access rights

经过多次尝试,我添加了一个新的存储库没有一个新的README.md,一切都很好,但我不知道原因。 :-(直到昨天,在新的尝试中,我终于注意到了......

所以除了Shravan40s之外,我的解决方案是

enter image description here

也许它会帮助别人......