通过SSH连接时出现“远程主机标识已更改”警告


21

今天,当我尝试登录服务器时收到此消息。我该怎么办?这是怎么回事?

$ ssh 10.10.10.69
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
3d:1b:02:9e:b2:b8:f0:f7:c6:4f:94:96:f6:e3:c0:d1.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:8
RSA host key for 10.10.10.69 has changed and you have requested strict checking.Host key verification failed.

2
顺便说一句,您可能希望避免以root用户身份在本地和远程登录,而应将非特权用户与sudo结合使用。
史蒂夫·比蒂

Answers:


12

您最近是否在服务器上重新安装了OS或类似的软件?那会导致这个。

要解决此问题,请执行以下操作:http : //www.cyberciti.biz/faq/warning-remote-host-identification-has-changed-error-and-solution/

解决方案1:使用ssh-keygen删除密钥

使用该-R选项可从known_hosts文件中删除所有属于主机名的密钥。此选项对于删除哈希主机很有用。如果您的远程主机名是server.example.com,请输入:

$ ssh-keygen -R {server.name.com}
$ ssh-keygen -R {ssh.server.ip.address}
$ ssh-keygen -R {ssh.server.ip.address} -f {/path/to/known_hosts}
$ ssh-keygen -R server.example.com

现在,您可以毫无问题地连接到主机。

解决方案2:在中添加正确的主机密钥 /home/user/.ssh/known_hosts

不必删除整个known_hosts文件,只需删除该文件中有问题的行。例如,如果您有3个服务器,如下所示。

myserver1.com,64.2.5.111 ssh-rsa  
 AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0EnGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0E
nGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94H+uv304/ZDz6xZb9ZWsdm+264qReImZzruAKxnwTo4dcHkgKXKHeefnBKyEvvp/2ExMV9WT5DVe1viVw
    k=
    myserver2.com,125.1.12.5 ssh-rsa
 AAAAB3NzaC1yc2EAAAABIwAAAQEAtDiERucsZzJGx/1kUNIOYhJbczbZHN2Z1gCnTjvO/0mO2R6KiQUP4hOdLppIUc9GNvlp1kGc3w7B9tREH6kghXFiBjrIn6VzUO4uwrnsMbnAnscD5EktgI7fG4ZcNUP 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGxQz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/IyI4NxHhhpltYZKW/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBf
    w=
    myserver3.com,125.2.1.15 ssh-rsa 
 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGx0lVkphVsvYD5hJzm0eKHv+oUXRT9v+QMIL+um/IyI4NxHhhpltYZKW
 as3533dka//sd33433////44632Z6MGnAazIviHBldxtGrFwvEnk82/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBfw==

要删除第二台服务器(myserver.com),请打开文件:

# vi +2 .ssh/known_hosts

然后按dd命令删除行。保存并关闭文件。或使用以下

$ vi ~/.ssh/known_hosts

现在转到第2行,键入以下命令

:2

现在删除带有dd的行并退出:

dd
:wq

或者,您可以按以下方式使用sed命令在第44行删除有问题的密钥:

$ sed -i 44d ~/.ssh/known_hosts

解决方案3:如果只有一台ssh服务器,则只需删除known_hosts文件

$ cd
$ rm .ssh/known_hosts
$ ssh ras.mydomain.com

尝试再次与ssh连接
现在,您应该可以通过ssh连接服务器了:

ssh username@server-ip-here
ssh nixcraft@server1.cyberciti.biz

接下来,您将得到一个全新的提示,将密钥添加到~/.ssh/known_hosts,如下所示:

The authenticity of host '10.86.115.66 ()' can't be established.
ECDSA key fingerprint is 4e:10:42:39:53:85:7f:89:89:dc:89:84:8d:79:e7:ed.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.86.115.66' (ECDSA) to the list of known hosts.

9
请注意,如果你不改变你的服务器的SSH主机密钥,因此应该不会取代你的主机密钥的副本,因为它可能是一个迹象,表明有人试图通过执行中间人攻击颠覆您的通信。
Kees Cook

7

据我所知,所有这些答案都是关于抑制警告而不是处理警告。简而言之,警告是告诉您服务器看起来不像以前那样。请参阅https://en.wikipedia.org/wiki/Man_in_the_middle_attack,了解这可能有危险的原因。

阅读man ssh,尤其是本节:

验证主机密钥

首次连接到服务器时,会向用户显示服务器公钥的指纹(除非已禁用StrictHostKeyChecking选项)。可以使用ssh-keygen(1)确定指纹:

   $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

为了安全起见,您(或您信任的人)应该首先在要连接的服务器上运行此命令。它会给您一种指纹,看起来像问题中警告中给出的指纹。当然,通常您没有此信息,但是如果您有理由怀疑某件事已发生,则可以通过运行该命令来检查服务器签名是否确实已更改,或者是否有可疑事件。


1
如果主机提供sha256指纹而不是md5哈希,请使用此选项。ssh -o FingerprintHash=md5 example.org
Declan McKenna

1
有关FingerprintHash的更多信息:superuser.com/questions/929566/…(例如,应首选sha256,但如果您最近的升级不够,您可能不知道该值)
不知所措,2013年

2

我遇到了同样的问题,如果您不想删除整个known_hosts文件,则可以执行以下命令:

ssh-keygen -R 10.10.10.69

删除known_hosts没有问题。您只需要将每次连接的服务器添加到列表中,就可以每次连接它们。可能还会破坏脚本,因为主机尚未受信任。当主机(您试图连接到的计算机上尝试生成新密钥,通常是由于重新安装或密钥旋转)签名时发生警报。


0

如果您认为警告为误报,则可以删除/ root / ssh / known_hosts以开始新的验证。


3
请不要这样做,您将丢失其他已知主机。相反,如果您确定它是误报,则在这种情况下删除特定的行:“ known_hosts:8”第8行。
罗杰·莱特2010年

0

如果您最近重新安装了服务器,或者以其他方式更改了主机密钥,则可以安全地从〜/ .ssh / known_hosts文件中删除第8行,然后重新添加服务器(通过SSH对其进行回答,然后回答“是“,当它要求进行密钥验证时)


0

由于您的服务器位于本地网络上,因此您可以放心。

如果您重新安装了系统,这是正常现象,但是我建议不要删除您的known_hosts文件 echo "" > ~/.ssh/known_hosts


人们仍然可以在本地网络上玩花样。商业或学校网络可能有很多不可信的空间。
Azendale 2011年


0

复制此线,但放入的用户名和主机名/ IP的userremote-server

ssh-keygen -f "/home/user/.ssh/known_hosts" -R remote-server

例如:

ssh-keygen -f "/home/dev1/.ssh/known_hosts" -R 192.168.199.108

并将其粘贴到您的本地终端上并运行它。这对我有用。


0

在要发布ssh的客户端节点上,

vi ~/.ssh/known_hosts

删除所有以IP地址开头的行,这些IP地址与您要尝试插入的IP在同一网络中。这将强制客户端节点将(ECDSA)永久添加到已知主机列表中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.