known_hosts有什么用?
一、问题描述
当我连接我的服务器的时候,返回信息如下
二、问题分析
返回的信息是什么意思?
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 a host key has just been changed.
也有可能host key刚刚改变了。
The fingerprint for the ECDSA key sent by the remote host is
SHA256:XXXXX
远程主机发送过来的ECDSA key 指纹是xxxxx
Please contact your system administrator.
Add correct host key in /Users/fangzhijie/.ssh/known_hosts to get rid of this message.
添加正确的host key到这个文件中来避免这条信息。
Offending ECDSA key in /Users/fangzhijie/.ssh/known_hosts:8
ECDSA host key for bei1 has changed and you have requested strict checking.
Host key verification failed.
这里的原因是,我把原先的腾讯云服务器重装系统,是属于host key改变的情况。所以根据提示,将正确的host key添加到指定的文件中。
三、问题解决
于是找到known_hosts这个文件,将远程主机发来的指纹(下面被红笔覆盖的),
替换到bei1对应指纹。重新连接,发现问题解决。
四、问题再分析
known_hosts这个文件究竟有什么用?里面放的是什么内容?
ssh会把你每个你访问过计算机的公钥(public key)都记录在known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。
从上面的图中可以看出,known_hosts中的格式是
Ip或域名 主机名 host-key
还是比较容易理解的,使用known_hosts的作用是防止DNS攻击
。
关于作者
后端程序员,五年开发经验,从事互联网金融方向。技术公众号「清泉白石」。如果您在阅读文章时有什么疑问或者发现文章的错误,欢迎在公众号里给我留言。