SSH之known_hosts文件

Posted 奇妙之二进制

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH之known_hosts文件相关的知识,希望对你有一定的参考价值。

一、什么是known_hosts文件

A通过ssh首次连接到B,B会将公钥1(host key)传递给A,A将公钥1存入known_hosts文件中,以后A再连接B时,B依然会传递给A一个公钥2,OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。。

二、打开known_hosts文件

1、Linux环境

vi ~/.ssh/known_hosts

2、Windows环境

打开资源管理器,在地址栏输入 %USERPROFILE%\\ssh 或 %USERPROFILE%.ssh 回车

​​​​​
host文件内容格式:ip 公钥

三、A通过ssh登陆B时提示 Host key verification failed.

原因:A的known_hosts文件中记录的B的公钥1 与 连接时B传过来的公钥2不匹配

解决方法:

方法一:删除A的known_hosts文件中记录的B的公钥(手动进行,不适用于自动化部署情形)
方法二:修改配置文件,在ssh登陆时不通过known_hosts文件进行验证(安全性有所降低),修改完需重启机器

vi ~/.ssh/config //编辑配置文件

添加以下两行代码:

StrictHostKeyChecking no 
UserKnownHostsFile /dev/null

以上是关于SSH之known_hosts文件的主要内容,如果未能解决你的问题,请参考以下文章

ssh 使用 $HOME/.ssh/known_hosts 以外的 known_hosts [关闭]

关于.ssh目录下的known_hosts文件的补充

Linux的ssh的known_host文件

06: known_hosts文件作用,以及常见问题

git bash 中的 ssh 客户端将它的 known_hosts 文件存储在 Windows 上的啥位置?

ssh 登陆免 known_hosts 提示