Git:权限被拒绝(公钥)是致命的-无法从远程存储库读取。在克隆Git存储库时


153

我无法克隆Git存储库,并出现以下错误:

krishna.soni@KRISHNACHANDRAS /c/Projects $ git clone http://stage.abc.com:10088/pqr
http://<url>/<repository> Cloning into '<repository>'... fatal: could not read Username for 'http://<url>': No such file or directory

我已经阅读了Bitbucket,Windows和“致命的:无法读取密码”,但是仍然有问题。

我继续进行,但现在收到此错误

sh.exe": chown: command not found

krishna.soni@KRISHNACHANDRAS /c
$ git clone ssh://krishna.sonipayu.in@stage.payupaisa.
/projects
Cloning into 'C:/projects'...
Permission denied (publickey).
fatal: Could not read from remote repository.

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

> krishna.soni@KRISHNACHANDRAS /c
>     $ git clone ssh:<url>
>     ts
>     Cloning into 'C:/projects'...
>     Permission denied (publickey).
>     fatal: Could not read from remote repository.

Please make sure you have the correct access rights

并且存储库存在。


您确定这是一个git存储库吗?
gravetii

是的 。我是git新手,在克隆时遇到此错误。我使用命令git config --global user.name“ John Doe”在全局配置文件中添加了电子邮件和名称$ git config --global user.email johndoe@example.com
KCS

主要原因是该存储库无法将您识别为git-server用户。您可以通过ssh访问服务器吗?
МалъСкрылевъ

如果有人在使用Github时遇到此问题,请按照此处提到的步骤进行操作:help.github.com/en/articles/…它对我有用
鲁纳克

Answers:


69

它看起来像是权限问题-不是Windows 7问题。

您的ssh密钥未经授权- Permission denied (publickey)

您需要创建一个公共ssh密钥,并要求Git存储库的管理员添加该ssh公共密钥。

有关如何执行此操作的信息:保存ssh密钥失败


27
真奇怪 该存储库是公共的,我正在克隆公共存储库。我不确定为什么我应该请求管理员许可克隆他在Github上托管的公共存储库。
Shailen 2014年

5
是的,这是错误的,您无需询问管理员任何问题,这是本地git的问题。
伊万·卡斯特拉诺斯

3
为什么很难?我成功了,但并非没有痛苦。
Niklas R.

9
您不需要为公共存储库授权密钥,只需使用HTTPS协议即可:stackoverflow.com/a/33072867/1385678
Diego V

225

对于来这里只是想获取存储库但不关心协议(ssh / https)的人们,您可能只想使用https而不是ssh(如果受支持)。

例如,您使用

git clone https://github.com/%REPOSITORYFOLDER%/%REPOSITORYNAME%.git

代替

git clone git@github.com:%REPOSITORYFOLDER%/%REPOSITORYNAME%.git

6
如果未解决ssh权限或您想跳过该部分,这是最合适的后备计划。
Wahib Ul Haq

13
此答案将机制从更改sshhttps。通过使用ssh访问存储库并不能解决原始问题。我想知道如何才能不断提高投票率,以解决这个问题。下面的其他答案都可以正确解决。
阿明

3
最初的问题是一个git newbie试图克隆一个仓库。如果目标是取消公共回购协议,这是最快的有效答案。
Vivek Chavda

谢谢您让我免于自杀。顺便说一句,只要您具有用户名和密码,就可以将其用于私人存储库。
比尔·瓦格纳

81

如果在创建SSH并将其添加到您的Bitbucket帐户或任何位置后,访问仍然存在问题,则需要在GitBash,OSX或Linux的终端上执行以下操作:

# Lists already added identities (‘ssh keys’)
ssh-add -l

然后,如果您没有看到列出的密钥,请添加以下内容(identity用其真实名称替换):

# Add a new identity
ssh-add ~/.ssh/identity

这对我有用。


3
ssh-add ~/.ssh/identity返回错误/Users/lee/.ssh/identity: No such file or directory
lee

14
从“〜/ .ssh”运行“ ssh-add”(并在出现提示时输入我的“〜/ .ssh / id_rsa”文件的密码)为我解决了问题。
James Furey

1
我能够拉出我的仓库,但不这样做就不能推,欢呼!
Dimitar Nestorov

@james Furey的回答帮助我在sourcetree中将ssh url标识为git repo。
YSR粉丝

2
经过数小时的流汗和尝试不同的工作后,为我工作。最终,唯一的事情是代替身份,在您自己的系统中使用该名称。在终端中执行cd命令转到.ssh文件夹,然后在终端中键入“ ls”命令。然后使用您自己的文件重播上述命令中的“身份”。转到sourcetree终端,cd ~然后:然后 cd .ssh然后 ls(复制不带.pub扩展名的名称)然后(运行此命令)ssh-add ~/.ssh/(copied name)
Tejas

21

我在GitHub上遇到了同样的问题。解决方法如下!

  1. 如下所述在计算机上生成SSH密钥生成SSH密钥
  2. 登录您的GitHub帐户:GitHub Login
  3. 在您的帐户中,添加新生成的SSH密钥:我的帐户SSH密钥
  4. 重试git clone该项目。

像魅力一样工作!!
Prakhar

1
现在,在过去的5年中,我已经在3个新的操作系统上使用了此答案,并且每次都运行良好。
kotoole

显然,High Sierra要求用户在.ssh / config文件中注册密钥。El Capitan设法做到了这一点。
dsomnus

14

我在Mac上遇到了这个问题-当我正确设置SSH以访问我的Git存储库时,重新启动后(有时Mac处于僵持状态),我的所有凭据都被删除了。显然,出于某种原因,pub密钥被设置为644,这导致将其从钥匙串中删除。阅读:

  • chmod 600 公钥
  • ssh-add ~/.ssh/[your private key]-这应该显示已添加身份。所需的密钥文件是不带.pub扩展名的密钥文件。
  • ssh-add -l 应该向您显示新添加的身份

编辑:显然MacOS倾向于删除密钥-下载High Sierra更新后(但我尚未安装),我的密钥已被删除,我必须通过再次添加 ssh-add


2
将macOS High Sierra升级到版本10.13.1后,该解决方案仍然是准确的。具体来说,当我尝试将提交推送到远程存储库时,Sourcetree是出现此问题的应用程序。上面的步骤为我解决了这个问题。
保罗·邦纳维尔

我在10.13.4上遇到了这个问题,该解决方案对我来说很有效。
安德鲁·伊布林

11

我也面临同样的问题。我做了以下工作,对我有用:

  1. 从Windows上的GIT GUI客户端生成密钥。将此密钥复制到剪贴板。
  2. bitBucket/git网站上打开您的帐户,然后将此密钥添加到您的个人资料中。这样,服务器就会知道您是从合法系统访问的合法用户。
  3. 而已。此后所有推送命令都对我有用。

这可以帮助我了解我是在没有以管理员身份运行Git Bash的情况下生成我的RSA的,这将我的RSA密钥放置在“ h”驱动器中:oops:
tylerlindell

7

对我来说,当我想从我的存储库中克隆时,在“权限被拒绝(公钥)致命:无法从远程存储库读取”之前,我收到了同样的消息。我的情况的解决方案是在克隆之前不使用sudo 就是这样。


非常感谢@mustapha,您真的节省了我的时间。
vinay kumar,

7

Github(或Bitbucket)在其服务器中找不到您的ssh密钥。

只需在您的帐户设置中添加密钥即可。


6

如果您生成新的公共ssh密钥并将其插入到bitbucket或github中,

它没有帮助- 请尝试重新启动PC。它帮助了我!


谢谢,这也是我需要做的。
斯蒂夫,

我必须关闭终端并打开一个新终端才能看到它的正常运行。
rahul

5

您需要通过运行来创建新的ssh密钥ssh-keygen -t rsa


@Joel Heroku参考已删除。谢谢
Biniam

4

我得到了错误...

Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

...当我的笔记本电脑因Windows 10更新错误而死亡并返回出厂设置后,尝试从Git Bash提示符与Bitbucket建立联系时。我已经从备份还原了所有的ssh文件。

重建计算机后,错误原因竟然是我的Windows帐户名不匹配。我了解到,公共密钥文件id_rsa.pub以易于理解的字符串结尾,该字符串包括Windows帐户名,@符号和计算机名。

最初设置计算机时,我创建了包括中间名首字母的Windows帐户名,但是当计算机重置为出厂设置时,新的DevOps家伙创建了没有中间名首字母的帐户名。

为了解决此问题,我只编辑了我的公共密钥文件,id_rsa.pub并在结尾处删除了名字中间的首字母。我坚持使用相同的计算机名称,这样就可以了。我将文件内容复制到Windows剪贴板。然后,我登录到Bitbucket,进入我的头像下的Bitbucket设置,并在粘贴新内容的位置添加了新的公共密钥。

回到Git Bash提示符,我通过输入命令确认它现在可以工作了。

ssh -T git@bitbucket.org

...然后我收到一条我已登录的消息。


4

在macOS / Linux(Ubuntu)中:

1.要进行身份验证,您需要从用户设置中将SSH密钥对的公共部分添加到bitbucket:用户设置-> SSH密钥

您通常会在〜/ .ssh目录中找到所说的公共部分id_rsa.pub。注意 .pub公用文件名的一部分。如果您还没有一个,它将帮助您生成一个

您尚未完成...

2.您需要让系统知道与哪个远程主机一起使用的密钥,因此请将这些行添加到〜/ .ssh / config文件中

Host bitbucket.org
 IdentityFile ~/.ssh/PRIVATE_KEY_FILE_NAME

PRIVATE_KEY_FILE_NAMESSH密钥对的私有部分的名称在哪里,如果您没有弄乱它的话,通常其默认名称是:id_rsa 在这种情况下,请替换为PRIVATE_KEY_FILE_NAME以上id_rsa(私有密钥没有 .pub扩展名)


请注意,您拼写错误的“ Ubuntu” —编辑必须至少为6个字符,所以我不建议编辑:)
Misha Nasledov

4

有用的线程,我不会给表带来太多新东西。我采取的步骤也是Maxime指出的描述的一部分,但有些人可能会忽略它。本节是将SSH密钥添加到ssh-agent

我已经生成了ssh-key,但是重新启动后,我无法克隆自己的存储库之一。

我必须启动ssh-agent并将私钥添加到此代理中才能进行克隆。

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

3

git clone从Windows命令行运行命令时,我遇到了同样的问题。但是该命令已从Git Bash成功运行。


3

我有类似的问题。我更改了ssh键,然后重新启动并尝试了所有其他“ n”解决方案。但是对我来说,实际的问题是我们的gitlab默认协议从ssh更改为https。

使用以下命令检查远程URL

git remote -v

更改远程URL

git remote set-url origin https://URL

太好了,我们不需要配置ssh。
罗希·帕特

我必须做同样的事情。在这种情况下,ssh密钥不适合我
Dani

致命的:无法访问' bitbucket.org:xxxxxx/xxxxxxxxt ':端口号以'r'
结尾

2

如果所有操作都失败,请像我一样,卸载GIT,然后重新安装。由于某种原因,此修复程序。

聚苯乙烯

  1. 我尝试生成新密钥并通过SSH公共密钥进行更新
  2. 还尝试删除所有密钥并尝试创建新密钥。
  3. 不,我的.gitconfig没有错

2

修复hubcli工具:

  • git config --global hub.protocol https 长期的
  • git remote add OOPS https://github.com/isomorphisms/go.git&& git push OOPS立即修复

由于hub命令行工具的默认hub.protocolgit-config值错误,因此会发生此错误。他们将存储库设置为

git://github.com/schacon/ticgit.git

而不是github实际接受的https://github.com/schacon/ticgit.git


阅读LESS=+/"HTTPS instead" man hub将解释上述“长期修复”命令的来源。


这挽救了我的一天!
周杰伦·李

1

克隆时,我遇到了类似的问题[我的错误:权限被拒绝(公钥)。致命:无法从远程存储库读取。请确保您具有正确的访问权限..等]

-在我的情况下,我使用的是bitBucket / UBUNTU14.04,但是已经有一组先前生成的密钥文件,并且已经更改了文件名。我只是COPIED文件到标准id_rsa和id_rsa.pub名称格式。然后,我重新运行命令而没有出现问题。

OBTW我也可以通过使用HTTP样式克隆来使用密码提示。


0

我在linux上有类似的问题。我通过登录github服务器并创建部署密钥解决了该问题。这是在存储库的设置下。然后,我复制并粘贴了我的公钥(通常在〜/ .ssh / id_rsa.pub中,但是您的配置可能有所不同)。有一个复选框可授予该键写访问权限。单击它(除非您仅使用git进行部署,在这种情况下,请不要单击它)。


0

我有同样的错误。我的解决方案是注销并再次登录,因为我的ssh-agent已与远程ssh密钥不同步。

以防万一有人看到其他答案似乎不适用于他们的情况,请在此处添加此内容。


0

在为gitlab设置ssh时遇到了相同的问题。我已经有ssh了github,我无法覆盖它。对我有用的步骤是:

  1. 使用新路径生成SSH并将其添加到ssh列表 ssh-add /path/to/new/id_rsa
  2. 创建一个名为文件config~/.ssh/使用。我用了vi ~/.ssh/config/
  3. 将此添加到新创建的文件

# GitLab.com server Host gitlab.com RSAAuthentication yes IdentityFile /path/to/new/id_rsa

  1. 保存并退出。

之后,重新启动终端并尝试推送,它应该可以工作


0

如果要克隆开放源代码项目以提交请求请求,请执行以下操作:

我想克隆一个开源项目,以便可以提交一些拉取请求。问题是我没有项目所有者的权限。没关系,由于我打算提交一份PR,这是一个可行的选择:

我的解决方案:

  1. 叉库

叉回购

  1. 然后从您的分叉存储库中克隆。 从分叉仓库中克隆

  2. 使用功能,然后提交拉取请求。



0

解决方案:在服务器上,您尝试克隆到cat〜/ .ssh / id_rsa.pub或从cat〜/ .ssh / id_rsa.pub推送到GitHub,设置,SSH和GPG密钥新的SSH密钥 粘贴密钥。


0

我看到此错误消息有很多不同的原因。尝试在本地已经与ssh等完全兼容的地方建立另一个存储库并将其连接到同一服务器但另一个存储库时,我遇到了相同的错误。没有找到答案,但我知道了。所以我发布了。希望可以帮助某人。

git remote add origin git@git.ourserver.com:teamalpha/repositorytwo.git

0

如果这些答案都没有帮助,并且

  1. 您正在使用Windows
  2. 您使用Putty生成密钥或已在PC上安装了Putty
  3. 您可以使用CMD或PowerShell生成密钥

尝试

  1. 删除你的钥匙
  2. 在Windows上搜索Git Bash,然后使用Git Bash命令行生成新密钥
  3. 将公钥添加到您的在线仓库中

然后,您将在git clone之后找到并键入yes进行确认,它应该开始克隆


-2

这可能很愚蠢,但它发生在我们身上:

如果您使用bitbucket和Sourcetree,而只是将克隆URL复制粘贴到新的回购对话框中,则在拉动或推入时将显示相同的错误。

确保删除URL之前的“ git clone”内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.