警告:远程主机标识已更改错误和解决方案

时间:2020-01-09 10:44:08  来源:igfitidea点击:

当我运行ssh命令时,出现如下错误:

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
5c:9b:16:56:a6:cd:11:10:3a:cd:1b:a2:91:cd:e5:1c.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending key in /home/user/.ssh/known_hosts:1
RSA host key for ras.mydomain.com has changed and you have requested strict checking.
Host key verification failed.
警告:远程主机标识已更改!
可能有人在做某些NASTY!可能有人正在偷听您(中间人攻击)! RSA主机密钥也可能刚被更改。
远程主机发送的RSA密钥的指纹为5c:9b:16:56:a6:cd:11:10:3a:cd:1b:a2:91:cd:e5:1c。
请与系统管理员联系。
在/home/user/.ssh/known_hosts中添加正确的主机密钥以解决此消息。
/home/user/.ssh/known_hosts中的有问题的密钥:1 ras.mydomain.com的RSA主机密钥已更改,您已请求严格检查。
主机密钥验证失败。

我如何解决此消息?
如果您已经用OpenSSH重新安装了Linux或者UNIX服务器,则将从客户端计算机中收到上述错误,如下所示:
警告:远程主机标识已更改错误

要解决此问题,请在$HOME/.ssh/known_hosts中添加正确的主机密钥。
您可以尝试使用以下命令来解决违规密钥。
仅当您更改了ssh密钥或者通过新的操作系统安装或者最近的OpenSSH服务器安装进行了修改时,才使用以下命令。

解决方案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

输出示例:

/home/Hyman/.ssh/known_hosts updated.
Original contents retained as /home/Hyman/.ssh/known_hosts.old

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

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

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

myserver1.com,64.2.5.111 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0EnGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrtheitroadchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0E
nGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrtheitroadchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94H+uv304/ZDz6xZb9ZWsdm+264qReImZzruAKxnwTo4dcHkgKXKHeefnBKyEvvp/2ExMV9WT5DVe1viVwk=
myserver2.com,125.1.12.5 ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAQEAtDiERucsZzJGx/1kUNIOYhJbczbZHN2Z1gCnTjvO/0mO2R6KiQUP4hOdLppIUc9GNvlp1kGc3w7B9tREH6kghXFiBjrIn6VzUO4uwrnsMbnAnscD5EktgI7fG4ZcNUP 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGxQz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/IyI4NxHhhpltYZKW/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBfw=
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 [email protected]

接下来,您将得到一个全新的提示,将密钥添加到~/.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.