如何獲取并驗證你的SSH密鑰指紋?
原創【51CTO精選譯文】有時你在登錄到一臺機器之后,發現SSH密鑰改變了。這種情況可能是由于中間人攻擊導致,但更多的情況下,是因為主機被重建,生成了新的SSH密鑰(所以大家重建服務器的時候要養成保存恢復SSH密鑰的好習慣)。
那么,應該如何檢查指紋?
你可以直接通過網絡從遠程服務器上獲取公共密鑰:
ssh-keyscan -p 22 -t rsa,dsa remote_host > /tmp/ssh_host_rsa_dsa_key.pub #使用你的主機名或IP地址替換remote_host字段
然后你就可以通過這個文件生成指紋:
ssh-keygen -l -f /tmp/ssh_host_rsa_dsa_key.pub
不過,如果你的密鑰在其他因素下改變,而你想要探索它改變的原因,那么網絡的方式是不夠的。想辦法通過其他方式登錄到真機上(比如通過管理控制臺或KVM控制臺),然后直接生成指紋:
ssh-keygen -lf /etc/ssh/ssh_host_dsa_key ssh-keygen -lf /etc/ssh/ssh_host_rsa_key
然后,與你通過網絡得到的指紋進行對比。如果它們匹配,那么萬事ok;如果不匹配,那么你可能有麻煩了。
如果指紋不匹配,那么你應該先做一個針對ARP請求的網絡掃描,看看有哪個IP地址回應了ARP請求。在ping的時候掃描一下看看有沒有ARP請求。如果有兩個主機,那么它們會為一個ARP條目而“互掐”起來,你應該能看到兩個回應。
一旦你知道了這個神秘主機的以太網地址,就可以通過路由(或交換機)接口上跟蹤到ARP流量的去處。
原文:http://administratosphere.wordpress.com/2011/05/28/getting-and-verifying-ssh-fingerprints/
【有關SSH密鑰指紋】
為了避免中間人(man-in-the-middle)攻擊,管理員在通過SSH遠程連接主機的時候,SSH會生成主機指紋并請求保存。服務器的管理員可以發送密鑰指紋給客戶端,來讓其在首次登陸時驗證服務器的真實性。在之后的連接中,都會驗證與保存的指紋是否匹配。如果不匹配,SSH會給出警告說明密鑰變更。
【編輯推薦】