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攻击

posted @ 2019-07-22 22:07  清泉白石  阅读(10651)  评论(0编辑  收藏  举报