参考:
https://blog.csdn.net/qq_36441027/article/details/81708726
https://www.cnblogs.com/liuyanerfly/p/9668426.html
问题的现象
我在本机(10.191.30.99)使用ssh登录其他服务器时,比如ssh 192.168.5.1(目的主机),出现了如下报错:(图借用参考1的博客)
错误:192.168.5.1(目的主机)的ECDSA主机密钥已更改,由于目的主机密钥指纹信息是和本机(10.191.30.99)保存过的密钥指纹信息不一致,导致验证无法通过,因此ssh 192.168.5.1失败了。
导致问题的原因
这主要是因为每次在10.191.30.99(本机)使用命令:ssh ip时,比如在10.191.30.99 (本机)上输入ssh 192.168.5.1(目的主机),会在第一次登录目的主机时,将目的主机的公钥(public key)保存在本机的~/.ssh/known_hosts文件中。当下次在本机使用ssh访问相同的目的主机时,OpenSSH会将目的主机的公钥与保存在本机的目的主机的公钥(即本机的文件/.ssh/known_hosts)进行匹配。如果公钥不同,OpenSSH会发出警告, 导致ssh登录失败。
解决方法
正是由于目的主机的公钥发生了改变,因此我们也需要在本机的~/.ssh/known_hosts文件中更新目的主机的公钥。方法如下:
vim ~/.ssh/known_hosts
# 打开文件后,使用目的主机的ip或者hostname,如:mange-dev-1,进行搜索
# 找到目的主机的公钥信息后,删除
此时我们再使用ssh 192.168.5.1即可成功,如果需要输入密码,输入正确的密码即可。