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

Jai*_*oya 6 git ssh ssh-keys

我最近更换了服务器,因此,我有了一个新的 IP 地址。当我尝试使用时git fetch [remote repository],我得到了这个:

C:\Users[路径]\app>git fetch [远程仓库]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@
警告:检测到可能的 DNS 欺骗!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@example.net 的 RSA 主机密钥已更改,对应 IP 地址 [新服务器的 IP 地址] 的密钥未知。这可能意味着 DNS SPOOFING 正在发生,或者主机的 IP 地址及其主机密钥同时更改。@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@
警告:远程主机标识已更改!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ 有人可能正在做一些令人讨厌的事情!现在有人可能正在窃听你(中间人攻击)!主机密钥也可能刚刚被更改。远程主机发送的 RSA 密钥的指纹是 SHA256:ep0A2t+sVMSaIEbS8wt8ptfmdHSr1kNocWsBNab0tsI。请联系您的系统管理员。在 /c/Users/[username]/.ssh/known_hosts 中添加正确的主机密钥以消除此消息。/c/Users/[username]/.ssh/known_hosts:1 中的违规 RSA 密钥 example.net 的 RSA 主机密钥已更改,您已要求进行严格检查。主机密钥验证失败。致命:无法从远程存储库读取。请确保您拥有正确的访问权限并且存储库存在。C:\用户[路径]\应用程序>

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

eft*_*ft0 7

如果您确实有一台新服务器并且您使用与旧服务器相同的名称或相同的 IP 引用它,那么很可能 ssh 证书不相同,并且您会收到一条欺骗警告消息。在消息中,您可以看到 ssh 指向旧证书信息所在的行:/c/Users/[username]/.ssh/known_hosts:1。长话短说:如果您更改了服务器,那么 ssh 证书应该是不一样的。只需从旧服务器的 ssh known_hosts 中删除该行(在本例中为文件的第一行),您就可以了。


dee*_*gan 5

警告消息在这里给出了更好的解释。例如.net 的RSA 主机密钥已更改,对应IP 地址[新服务器的IP 地址] 的密钥未知。

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

更改前:example.net - 10.0.0.0

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

更改后: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