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

时间:2014-01-13 09:29:21

标签: linux git gitlab ssh-keys

我已经获得了对我们的生产服务器的root访问权限,并且我想将最新版本的git部署到服务器,但是当我在我想要更新的文件夹上“git pull”时,我遇到了以下错误。

我已经浏览了一下,但无法找到明确的答案。

登台服务器在同一台计算机上运行,​​但只是在不同的文件夹中,当我在该文件夹上pull时,一切正常。

对于Linux,我不是很有经验,所以请帮我解决一下如何修复的明确答案: - )

否则我可以访问我需要的任何内容

P.S。 这在过去是有效的,所以我假设它与SSH密钥有关

错误:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The ECDSA host key for www.site.org has changed,
and the key for the corresponding IP address x.x.x.x
is unknown. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
*************
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /root/.ssh/known_hosts:1
  remove with: ssh-keygen -f "/root/.ssh/known_hosts" -R gitlab.site.org
ECDSA host key for gitlab.site.org has changed and you have requested strict checking.
Host key verification failed.

5 个答案:

答案 0 :(得分:27)

在日志中,您会看到以下文字:

(...)

Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /root/.ssh/known_hosts:1
remove with: ssh-keygen -f "/root/.ssh/known_hosts" -R gitlab.site.org
ECDSA host key for gitlab.site.org has changed and you have requested strict checking.
Host key verification failed.

所以这是执行那里建议的命令的问题:

ssh-keygen -f "/root/.ssh/known_hosts" -R gitlab.site.org

答案 1 :(得分:16)

<强>窗:

  1. 转到/Users/Abhilash/.ssh/known_hosts并删除其中的内容并保存。
  2. Linux / Mac:

    1. 转到~/.ssh/
    2. nano known_hosts
    3. 删除内容并保存ctrl+O
    4. 注意:  您将被要求在再次推送时保存密钥。

答案 2 :(得分:1)

所有其他答案都会带来安全风险。

出现此错误是因为您的 known_hosts 文件中有一条记录,表明服务器应该具有特定的 ssh 密钥。但是当您尝试连接时,服务器发送了一个不同的 ssh 密钥,该密钥与您的 known_hosts 文件中的密钥不匹配。您的特定错误消息说:

Offending ECDSA key in /root/.ssh/known_hosts:1

这意味着 known_hosts 文件中的第一行与远程服务器发送的不同。

解决问题的安全方法如下:

  1. 从可信赖的来源找出正确的密钥指纹应该是什么。例如在这里您可以找到 GitHubGitLab 的正确指纹。 (如果您的组织自行托管 GitLab,您将需要与您的管理员联系以获取 ssh 密钥指纹。)
  2. 检查您的 known_hosts 文件中的现有指纹是否正确。
    您可以运行 ssh-keygen -lf ~/.ssh/known_hosts(或在您的情况下为 /root/.ssh/known_hosts)从您的 known_hosts 文件生成 SHA256 指纹。您的错误消息说问题出在第一个键上。在 GitHub 或 GitLab 上找到等效的 SHA256 指纹并检查它是否完全匹配。
    例如以下是上述命令的输出:
    256 SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw gitlab.com (ECDSA)
    
    这是来自 GitLab 网站的 ECDSA SHA256 指纹:
    HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw
    
  3. 如果来自 known_hosts 的现有指纹与来自 GitHubGitLab 网站的官方指纹匹配,则 ssh 已检测到中间人 (MitM) 攻击。 停止。不要连接到服务器。尝试从不同的 Internet 连接进行连接。与您的管理员联系。
  4. 如果 known_hosts 中的现有指纹与官方指纹不匹配,那么要么您之前受到了中间人攻击,要么托管 GitLab 的服务器已更改其 ssh 密钥。您可以从 known_hosts 文件中删除指纹。 (注意:只删除引起问题的特定指纹。)下次连接 GitLab 时,系统会提示您将新指纹添加到 known_hosts 文件中。
    The authenticity of host 'gitlab.com (172.65.251.78)' can't be established.
    ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw.
    Are you sure you want to continue connecting (yes/no/[fingerprint])?
    
    仔细检查指纹是否与 GitHubGitLab 网站上显示的相符,然后相应地键入 yesno

答案 3 :(得分:0)

按照这些对我有用的步骤进行操作后,我也遇到了同样的问题。

对于macOS:

Step 1: Go to Folder or use command+shift+g
Step 2: type "~/.ssh/"
Step 3: Open "known_hosts" file and Remove all the content
Step 4: Now Open terminal and pull from another branch, It will ask for password give your system password.

它肯定会工作。

答案 4 :(得分:-1)

如果您想要永久删除此消息,可以编辑您的ssh配置文件(~/.ssh/config)以包含:

Host {YOUR HOST HERE}
 StrictHostKeyChecking no
 UserKnownHostsFile /dev/null