权限被拒绝(publickey)致命:无法从远程存储库读取。同时克隆Git存储库

问题描述 投票:118回答:24

我无法克隆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 and “fatal: could not read Password for”,但仍有问题。

我继续前进,但现在得到了这个错误

sh.exe": chown: command not found

krishna.soni@KRISHNACHANDRAS /c
$ git clone ssh://[email protected].
/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 git-clone
24个回答
53
投票

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

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

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

有关如何执行此操作的信息:Saving ssh key fails


4
投票

如果你生成新的公共ssh密钥并将其插入bitbucket或github和

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


3
投票

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


3
投票

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


3
投票

In 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_NAME是SSH密钥对的私有部分的名称,如果你没有搞乱它,通常它的默认名称是:id_rsa在这种情况下用PRIVATE_KEY_FILE_NAME替换上面的id_rsa(私钥没有.pub扩展名)


2
投票

如果全部失败,就像我一样,卸载GIT,重新安装。由于某种原因,这个修复。

附:

  1. 我尝试在SSH公钥上生成新密钥和更新
  2. 还尝试删除所有键并尝试创建一个新密钥。
  3. 不,我的.gitconfig没有错

2
投票

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

检查远程网址

git remote -v

更改远程网址

git remote set-url origin https://URL

1
投票

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

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

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


1
投票

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

在这里添加这个以防万一有人看到其他答案似乎不适用于他们的情况。


1
投票

有用的线程,我没有带来太多新的表。我采取的步骤也是Maxime帮助指出的描述的一部分,但有些人可能会忽略它。该部分是Adding your SSH key to the ssh-agent

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

我必须启动ssh-agent并将私钥添加到此代理以便克隆。

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

0
投票

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


196
投票

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

所以例如你使用

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

代替

git clone [email protected]:%REPOSITORYFOLDER%/%REPOSITORYNAME%.git

0
投票

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

  1. 使用新路径生成SSH并将其添加到ssh list 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
投票

如果要克隆开源项目以提交Pull请求:

我想克隆一个开源项目,所以我可以提交一些拉取请求。问题是我没有项目所有者的权限。无论如何,由于我的意图是提交公关,这是一个可行的选择:

我的解决方案

  1. Fork存储库

Fork Repo

  1. 然后从forked存储库中克隆。 Clone from forked Repo
  2. 处理您的功能,然后提交拉取请求。

0
投票

修复hub cli工具:

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

hub命令行工具发生此错误,因为它们的默认hub.protocol git-config值错误。他们设置了回购

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

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


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


0
投票

您可以尝试将ssh密钥添加到私钥钥匙中。它对我有用

ssh-add -K ~/.ssh/[your-private-key]

-2
投票

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

如果您正在使用bitbucket和Sourcetree,并且只是将克隆URL复制粘贴到新的repo对话框,它将在拉或推时显示相同的错误。

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


66
投票

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

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

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

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

这对我有用。


14
投票

我遇到了与GitHub相同的问题。这很容易解决。

  1. 如下所述在您的计算机上生成SSH密钥:Generating SSH keys
  2. 登录您的GitHub帐户:GitHub Login
  3. 在您的帐户中,添加新生成的SSH密钥:My account SSH keys
  4. 再试一次git clone项目。

11
投票

我也遇到了同样的问题。我做了以下工作,它对我有用:

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

11
投票

我在Mac上遇到过这个问题 - 当我正确设置SSH以访问我的Git存储库时,重启后(有些时候Mac处于对峙状态),我的所有凭据都被删除了。显然,由于某种原因,pub键设置为644,导致它从keychain中删除。阅读:

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

编辑:显然MacOS有删除键的倾向 - 下载High Sierra更新后(但我还没有安装)我的密钥已被删除,我不得不再次通过ssh-add添加它


6
投票

Github(或Bitbucket)在他们的服务器中找不到你的ssh密钥。

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


5
投票

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


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 [email protected]

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

© www.soinside.com 2019 - 2024. All rights reserved.