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

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

$ 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. 

您最近是否在服务器上重新安装了操作系统或类似的东西? 这会导致这种情况。

解决这个问题: http : //www.cyberciti.biz/faq/warning-remote-host-identification-has-changed-error-and-solution/

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

使用-R选项从known_hosts文件中删除属于hostname的所有键。 此选项对于删除散列主机很有用。 如果远程主机名是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:只删除known_hosts文件如果只有一个ssh服务器

 $ 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. 

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

阅读man ssh ,特别是本节:

validation主机密钥

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

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

为了安全起见,您(或您信任的人)应首先在您要连接的服务器上运行此命令。 它会给你一个类似于问题警告中给出的指纹。 当然,通常你没有这个信息,但是如果你有理由怀疑某些东西已经启动,那么运行该命令就可以检查服务器签名是否真的发生了变化,或者是否存在可疑的问题。

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

ssh-keygen -R 10.10.10.69

删除known_hosts没有问题。 每次连接时,您只需将连接的每台服务器添加到列表中。 也可能搞砸你的脚本,因为主机还不可信。 当主机的签名(您尝试连接到生成的新密钥的计算机,通常是因为重新安装或密钥轮换)时,会发出警报。

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

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

由于您的服务器位于本地网络上,因此您可以非常自信。

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

ssh -q也有这个技巧。

复制此行,但为userremote-server输入用户名和主机名/ IP:

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

例如:

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

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