Linux
處理 SSH 主機驗證錯誤的最流暢的工作流程?
這是一個我們都面臨的簡單問題,並且可能無需多想就可以手動解決。
隨著伺服器的更改、重新配置或重新分配 IP 地址,我們會收到下面的 SSH 主機驗證消息。我有興趣簡化工作流程以解決這些 ssh 辨識錯誤。
鑑於以下消息,我通常會
vi /root/.ssh/known_hosts +434
刪除 (dd
) 違規行。我看到其他組織的開發人員/使用者因為看到此消息而感到沮喪而刪除了他們的整個
known_hosts
文件。雖然我沒有走那麼遠,但我知道有一種更優雅的方式來處理這個問題。尖端?
[root@xt ~]# ssh las-db1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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 the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is ed:86:a2:c4:cd:9b:c5:7a:b1:2b:cc:42:15:76:8c:56. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending key in /root/.ssh/known_hosts:434 RSA host key for las-db1 has changed and you have requested strict checking. Host key verification failed.
您可以使用該
ssh-keygen
命令按主機刪除特定條目:ssh-keygen -R las-db1
如果你沒有那個命令,你總是可以使用 sed:
sed -i '/las-db1/d' /root/.ssh/known_hosts
作為一個 puppet 使用者,我解決這個問題的方法是讓我的 puppet 伺服器收集我的 SSH 主機密鑰並將它們發佈到我所有建立 SSH 連接的系統。
這樣我就不必擔心刪除它們。自從我的代理每 30 分鐘執行一次以來,puppet 有 99% 的時間為我執行並更新了密鑰。對我來說例外情況非常罕見,因此如果我不願意等待,我不介意快速編輯系統範圍的 known_hosts。
class ssh::hostkeys { @@sshkey { "${::clientcert}_rsa": type => rsa, key => $sshrsakey, tag => 'rsa_key', } if 'true' == $common::params::sshclient { Sshkey <<| tag == 'rsa_key' |>> { ensure => present } } file {'/etc/ssh/ssh_known_hosts': ensure => present, owner => 'root', group => 'root', mode => 0644, } }