克隆 git repo 导致错误 - 主机密钥验证失败。致命:远端意外挂断

Posted

技术标签:

【中文标题】克隆 git repo 导致错误 - 主机密钥验证失败。致命:远端意外挂断【英文标题】:Cloning git repo causes error - Host key verification failed. fatal: The remote end hung up unexpectedly 【发布时间】:2013-02-19 07:59:51 【问题描述】:

我正在使用 SSH 将 git repo 克隆到我的 Web 服务器,但每次我收到此错误

$git clone git@github.com:aleccunningham/marjoram.git
Cloning into marjoram...
Host key verification failed.

我已经尝试了几乎所有在 Google 搜索中显示的内容,但我对为什么这不起作用感到目瞪口呆。有什么想法吗?

另外,我没有使用像 Jenkins 这样的东西。

【问题讨论】:

那么您到底尝试了什么?当你运行 ssh -T git@github.com 时会发生什么? 假设您的ssh keys 已正确设置,请在删除$HOME/.ssh/known_hosts 处的known_hosts 后再次尝试运行该命令。在删除文件之前备份文件。 @Sebastian 如果我运行它,我得到“权限被拒绝(公钥)。我尝试在 github 上创建一个 SSH 密钥,尝试清除服务器上的密钥以便生成新的密钥,创建一个新的一个并将其添加到服务器,以及其他大多数。 @DevendraD.Chavan 我在哪里可以找到我的服务器上的 known_hosts? $HOME/.ssh/known_hosts 不返回这样的文件或目录 known_hosts 文件仅在您接受主机同时 ssh 到它时创建。 【参考方案1】:

问题可能是您的 ~/.ssh/known_hosts 文件中不存在 Github。

将 GitHub 追加到授权主机列表中:

ssh-keyscan -H github.com >> ~/.ssh/known_hosts

【讨论】:

这在自动化系统设置时很有用,因为它允许您强制 TOFU(首次使用时信任)设置(通常是交互式的)。在这种情况下,修复客户端公钥没有任何作用,因为这不是问题。 我们如何在 windows 中做到这一点? @Whitecat 用户在>> 之后的正确地址,如%userprofile%\.ssh\known_hosts @Tupy,宾果游戏成功了。否则,我会正确设置所有内容。谢谢。 我在使用 linux 的 windows 子系统时遇到了这个问题,如果没有这个,它将无法接受。【参考方案2】:

已解决问题...您需要将 ssh 公钥添加到您的 github 帐户。

    验证 ssh 密钥是否已正确设置。
      运行ssh-keygen 输入密码(保持默认路径-~/.ssh/id_rsa
    Add github 账号的公钥(~/.ssh/id_rsa.pub) 试试git clone。有效!

初始状态(公钥未添加到 git hub 账户)

foo@bn18-251:~$ rm -rf test
foo@bn18-251:~$ ls
foo@bn18-251:~$ git clone git@github.com:devendra-d-chavan/test.git
Cloning into 'test'...
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
foo@bn18-251:~$

现在,将公钥~/.ssh/id_rsa.pub添加到github账号(我用的是cat ~/.ssh/id_rsa.pub

foo@bn18-251:~$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/foo/.ssh/id_rsa): 
Created directory '/home/foo/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/foo/.ssh/id_rsa.
Your public key has been saved in /home/foo/.ssh/id_rsa.pub.
The key fingerprint is:
xxxxx
The key's randomart image is:
+--[ RSA 2048]----+
xxxxx
+-----------------+
foo@bn18-251:~$ cat ./.ssh/id_rsa.pub 
xxxxx
foo@bn18-251:~$ git clone git@github.com:devendra-d-chavan/test.git
Cloning into 'test'...
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts.
Enter passphrase for key '/home/foo/.ssh/id_rsa': 
warning: You appear to have cloned an empty repository.
foo@bn18-251:~$ ls
test
foo@bn18-251:~/test$ git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)

【讨论】:

原来我遇到了一个更容易的问题。一方面,使用来自 repo 的 HTTPS 链接有效,当我不应该将它指向 /home/public 时,我还试图将它克隆到 /home/private。当它终于奏效时真是一种解脱! 客户端上的密钥(ssh-keygen等)不是“主机密钥验证失败”的原因。对于将来阅读本文的任何其他人,这实际上是@mooshe 在 cmets 中的后续问题的答案。以下 Tupy 的答案在技术上是对所提出问题的正确答案。【参考方案3】:

好吧,从 sourceTree 我无法解决这个问题,但我从 bash 创建了 sshkey,至少它可以从 git-bash 工作。

https://confluence.atlassian.com/bitbucket/set-up-an-ssh-key-728138079.html

【讨论】:

【参考方案4】:

我也遇到了同样的问题,解决方法很简单,从cmd或者其他windows命令行工具改成git bash即可。 Windows 有时不能很好地处理 git npm 依赖项。

【讨论】:

以上是关于克隆 git repo 导致错误 - 主机密钥验证失败。致命:远端意外挂断的主要内容,如果未能解决你的问题,请参考以下文章

Git 错误:无法与 XX.XX.XXX.XXX 协商:找不到匹配的主机密钥类型。他们的提议:ssh-dss [重复]

GitLab runner 获取子模块的“主机密钥验证失败”

Git 扩展验证错误

无法“git pull” - 主机密钥验证失败

Jenkins无法签出Git存储库 - 主机密钥验证失败

团队成员无法从 BitBucket 克隆 repo?