ssh跳過knownhost文件

在平時工做中,有時候須要SSH登錄到別的Linux主機上去,但有時候SSH登錄會被禁止,並彈出以下相似提示:安全

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
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.
The fingerprint for the RSA key sent by the remote host is
SHA256:a8fAxLioJ3P3YoM04dKmz/nc75axX6jtGaIvBNirKO4.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending RSA key in /root/.ssh/known_hosts:1
RSA host key for 192.168.80.7 has changed and you have requested strict checking.
Host key verification failed.服務器

 

比較奇怪,因而研究了一下。 ssh會把你每一個你訪問過計算機的公鑰(public key)都記錄在~/.ssh/known_hosts。當下次訪問相同計算機時,OpenSSH會覈對公鑰。若是公鑰不一樣,OpenSSH會發出警告, 避免你受到DNS Hijack之類的攻擊。我在上面列出的狀況,就是這種狀況。ssh

緣由:一臺主機上有多個Linux系統,會常常切換,那麼這些系統使用同一ip,登陸過一次後就會把ssh信息記錄在本地的~/.ssh/known_hsots文件中,切換該系統後再用ssh訪問這臺主機就會出現衝突警告,須要手動刪除修改known_hsots裏面的內容。this

有如下兩個解決方案:
1. 手動刪除修改known_hsots裏面的內容;
2. 修改配置文件「~/.ssh/config」,加上這兩行,重啓服務器。spa

1    StrictHostKeyChecking no           # 不會問yes/no
2    UserKnownHostsFile /dev/null       # 將文件定到空,每次不同也沒事

優缺點:
1. 須要每次手動刪除文件內容,一些自動化腳本的沒法運行(在SSH登錄時失敗),可是安全性高;
2. SSH登錄時會忽略known_hsots的訪問,可是安全性低;.net

 


參考文檔:https://blog.csdn.net/yasaken/article/details/7348441 code

相關文章
相關標籤/搜索