在使用 SSH 过程中,有时候用SSH登录别的Linux主机会出现Host key verification failed错误提示,出现这种错误,是因为SSH 会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时, OpenSSH 会核对公钥。如果公钥不同, OpenSSH 会发出警告, 避免你受到DNS Hijack之类的攻击。总结起来,大概可以使用以下几种方法解决:
1.直接删除 .ssh 目录下的 known_hosts 文件。当然这个方案也是可行的,但并非解决问题的根本办法,因为继续使用,今后还会出现这样的情况,还得再删除,这种方法最直接,但不是永久解决问题。
2.使用SSH连接主机时,加上-o StrictHostKeyChecking=no参数,例如:

1
ssh -o StrictHostKeyChecking=no root@192.168.22.128

但这种方法只针对当前操作有用。
3.修改配置文件/etc/ssh/ssh_config或者~/.ssh/config,默认StrictHostKeyChecking=ask,修改成:

1
StrictHostKeyChecking no

这是最不安全的做法,相对安全的内网测试时建议使用。
4.将远程的fingerprint存入 .ssh 目录下的 known_hosts 文件中,这样就不会每次询问了:

1
2
3
4
5
6
ssh-keygen -R [hostname]
ssh-keygen -R [ip_address]
ssh-keygen -R [hostname],[ip_address]
ssh-keyscan -H [hostname],[ip_address] >> ~/.ssh/known_hosts
ssh-keyscan -H [ip_address] >> ~/.ssh/known_hosts
ssh-keyscan -H [hostname] >> ~/.ssh/known_hosts

5.参考我之前写的《Windows共用SSH密钥自动登陆多台Linux服务器》文章,SSH自动免密码登陆的方法。

参考资料:
http://serverfault.com/questions/132970/can-i-automatically-add-a-new-host-to-known-hosts

最后更新: 2018年01月06日 17:04

原始链接: http://blog.minhow.com/articles/linux/ssh-login-fail/

× 请我吃糖~
打赏二维码