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

时间:2014-01-21 10:27:50

标签: git git-clone

我无法克隆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://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

并且存储库存在。

31 个答案:

答案 0 :(得分:191)

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

例如,您使用

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

而不是

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

答案 1 :(得分:65)

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

ssh-add -l

然后,如果您没有看到列出的密钥,请将其添加为:

ssh-add ~/.ssh/identity

这对我有用。

答案 2 :(得分:53)

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

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

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

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

答案 3 :(得分:14)

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

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

答案 4 :(得分:11)

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

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

答案 5 :(得分:11)

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

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

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

答案 6 :(得分:6)

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

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

答案 7 :(得分:5)

对我来说,当我想从我的存储库中克隆时,我发现了相同的消息&#34; Permission denied(publickey)致命:无法从远程存储库中读取&#34;。我的案例的解决方案是在克隆之前不使用sudo 那就是它。

答案 8 :(得分:4)

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

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

答案 9 :(得分: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

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

答案 10 :(得分:3)

您需要运行ssh-keygen -t rsa

来创建新的ssh密钥

答案 11 :(得分:3)

在macOS / Linux(Ubuntu)中:

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

您可以在〜/ .ssh目录中找到所述公共部分,通常是id_rsa.pub。请注意Public的文件名的.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扩展名)

答案 12 :(得分:3)

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

答案 13 :(得分:2)

如果一切都失败了,就像我一样,卸载GIT,重新安装。由于某些原因,这个修复了。

P.S。

  1. 我尝试使用SSH公钥生成新密钥和更新
  2. 还尝试删除所有密钥,并尝试创建一个新密钥。
  3. 不,我的.gitconfig
  4. 没问题

答案 14 :(得分:2)

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

使用

检查远程网址
git remote -v

更改远程网址

git remote set-url origin https://URL

答案 15 :(得分:1)

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

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

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

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

答案 16 :(得分:1)

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

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

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

答案 17 :(得分: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将说明上述“长期修复”命令的来源。

答案 18 :(得分:0)

对于 Fedora 33+ 和 Bitbucket 用户:

出现此问题是因为哈希算法已过时。如 Bitbucket 所述,有两个选项:

选项 1:

添加到 ~/.ssh/config 文件。 (如果文件不存在,只需创建它。)

Host bitbucket.org
  PubkeyAcceptedKeyTypes +ssh-rsa

选项 2:

使用更安全的算法。

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

答案 19 :(得分:0)

更改了要克隆的文件夹的权限后,它可以工作:

sudo chown -R ubuntu:ubuntu /var/projects

答案 20 :(得分:0)

我遵循了Generating a new SSH key and adding it to the ssh-agent

中详述的步骤

Auto-launching ssh-agent on Git for Windows

在我的情况下,Windows中没有~/.profile文件。 我必须创建它,然后添加以上链接中提供的脚本。

答案 21 :(得分:0)

删除远程原点

git remote remove origin

添加HTTP远程来源

答案 22 :(得分:0)

如果这些答案均无济于事,并且

  1. 您正在使用Windows
  2. 您使用Putty生成密钥或已将Putty安装在 您的电脑
  3. 您使用CMD或PowerShell生成密钥

尝试

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

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

答案 23 :(得分:0)

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

first_query = """
SELECT TABLE1.RULE_ID, TABLE2.STATUS, TABLE2.ERROR_MESSAGE, TABLE2.PROCESS_ID
FROM TABLE2 LEFT JOIN
     TABLE1
      ON TABLE1.RULE_ID = TABLE2.RULE_ID 
WHERE TABLE1.RULE_NAME IN ('TEST1', 'TEST2')   
"""

second_query = """
SELECT RECORDS_PROCESSED, PROCESS_ID, STATUS
FROM TABLE3
"""

join_query = """
SELECT RULE_ID, STATUS, ERROR_MESSAGE, PROCESS_ID
FROM (first_query) as query_1
INNER JOIN (second_query) as query_2
ON query_1.PROCESS_ID = query_2.PROCESS_ID 
GROUP BY PROCESS_ID desc
"""

答案 24 :(得分:0)

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

答案 25 :(得分:0)

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

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

答案 26 :(得分:0)

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

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

我的解决方案:

  1. 叉库

Fork Repo

  1. 然后从分支的存储库中克隆。 Clone from forked Repo

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

答案 27 :(得分:0)

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

  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. 保存并退出。

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

答案 28 :(得分:0)

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

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

答案 29 :(得分:0)

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

答案 30 :(得分:-2)

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

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

请务必删除&#39; git clone&#39; URL之前的内容。