检测到可能的DNS欺骗。远程主机识别已更改

时间:2018-05-31 16:27:20

标签: git ssh ssh-keys

我最近改变了服务器,因此我有了一个新的IP地址。当我尝试使用git fetch [remote repository]时,我明白了:

  

C:\ Users [path] \ app> git fetch [remote repository]   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @@   警告:检测到可能的DNS欺骗! @   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ RSA   example.net的主机密钥已更改,而密钥为   对应的IP地址[新服务器的IP地址]未知。这个   可能意味着正在发生DNS SPOOFING或IP地址   主机及其主机密钥已同时更改。   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @@   警告:远程主机识别已更改! @   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ 它是   可能有人在做什么!有人可能   现在正在窃听你(中间人攻击)!也是   可能主机密钥刚刚更改。指纹   远程主机发送的RSA密钥是   SHA256:ep0A2t + sVMSaIEbS8wt8ptfmdHSr1kNocWsBNab0tsI。请联系   你的系统管理员。添加正确的主机密钥   /c/Users/[username]/.ssh/known_hosts来摆脱这条消息。   在/c/Users/[username]/.ssh/known_hosts:1 RSA主机中攻击RSA密钥   example.net的密钥已更改,您已请求严格   检查。主机密钥验证失败。致命:无法读取   远程存储库。请确保您拥有正确的访问权限   并且存储库存在。 C:\用户[路径] \应用>

我只需要从新服务器获取一个新的SSH密钥并将其放在我的本地计算机上来解决这个问题,对吗?谢谢。

2 个答案:

答案 0 :(得分:2)

警告消息在此处提供了更好的解释。 example.net的RSA主机密钥已更改,并且对应IP地址[新服务器的IP地址]的密钥未知。

在更改example.net(10.0.0.0)的IP和更改example.net(10.0.0.1)的IP之后,让我们比较两种情况。

更改前:example.net-10.0.0.0

10.0.0.2 >> ssh user@example.net 服务器10.0.0.0的主机指纹存储在服务器10.0.0.2。的已知主机文件中。

更改后:example.net-10.0.0.1

10.0.0.2 >> ssh user@example.net 现在example.net指向10.0.0.1,但是在已知的主机文件中example.net仍具有10.0.0.0的主机指纹。因此,每当尝试ssh到example.net时,您都会收到一条警告,因为主机密钥是新服务器,因此其主机密钥已更改。按照ssh的说法,它认为其他人可以访问您的DNS,并且可能将DNS的端点更改为任何错误的服务器,这就是您面临DNS欺骗警告的原因。

要确认它,您需要说ssh是您有意更改它的人。为此,只需从服务器10.0.0.2的known_host文件中删除旧的主机密钥项,然后删除10.0.0.0的项。

查找服务器的指纹:

ssh-keygen -F example.net

删除服务器的指纹:

ssh-keygen -R example.net

答案 1 :(得分:1)

如果您实际拥有一台新服务器并且使用旧服务器的相同名称或相同的IP来引用它,那么很可能ssh证书不一样,您将得到一个欺骗它的警告信息。在消息中,您可以看到ssh指向旧证书信息所在的行: / c / Users / [username] /.ssh / known_hosts:1 。长话短说:如果你改变了服务器,那么它预计ssh证书是不一样的。只需删除旧服务器的ssh known_hosts中的行(在这种情况下是文件的第一行),你就可以了。