一、問題描述
當我連接我的服務器的時候,返回信息如下
二、問題分析
返回的信息是什么意思?
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攻擊
。