遠端主機標識已更改
我正在嘗試通過我的mac上的終端在OVH(unbuntu 16)的雲伺服器上手動連接serverpilot(
ssh root@vpsXXX.ovh.net
)該操作失敗了一次,現在我正在嘗試重新設置它,我收到一條錯誤消息“警告:遠端主機標識已更改!”
我在部落格上讀到打字
ssh-keygen -R hostname
可能會解決問題,但是當我這樣做時,我會收到一條消息"Host hostname not found in /Users/GregMac/.ssh/known_hosts"
知道如何解決這個問題嗎?(我是伺服器配置和命令行的新手……這就是我指望 serverpilot 的原因)
謝謝
簡短的回答
自您上次嘗試訪問該主機上執行的 SSH 伺服器以來,有一個文件已更改。那個文件是
/Users/whateveryourusernameis/.ssh/known_hosts
該文件中的某處是一個條目,只有一行,以您嘗試訪問的主機開頭,例如
[vpsXXX.ovh.net]
.如果您確定您嘗試訪問的伺服器是您自己更改和設置的伺服器,則刪除該行並重試是安全的。
更長的答案,電話
SSH 是系統管理員腰帶上最基本的工具,它的工作原理值得您關注。
當您聯繫 ssh 伺服器時,伺服器採取的第一步是向 ssh 客戶端提供它自己的公共主機密鑰。此密鑰通常附加到客戶端的
~/.ssh/known_hosts
文件中,因此如果此密鑰在不同的 ssh 會話之間發生更改,客戶端將被警告該主機不再是它之前聯繫的原始主機。這會提醒您您所訪問的主機可能是冒名頂替者,除非您已經毫無疑問地知道主機實際上已經更改。主機密鑰是SSH 協商過程的核心部分,如果您正在管理任何系統,您應該熟悉它。該密鑰通常只生成一次,即第一次啟動 SSH 伺服器時。因此,如果您收到主機密鑰已更改的警告,則表明發生了以下事件之一:
- 部署了新的伺服器(或機器映像等),並且曾經指向舊伺服器的 IP 地址或域名已更改為指向新伺服器(這是典型的,尤其是在雲環境中)。
- 有人更改或刪除了機器上的公共主機密鑰。我會立即想知道為什麼,因為通常沒有理由 - 一個例外可能是非常嚴格的安全程序,它會不時地輪換密鑰。即使是這樣,在這種情況下,我希望分發新的公鑰指紋以避免此錯誤。
- 有人設法攔截了您發送到該 IP 或域名的流量,並將其指向他們自己的伺服器,這可能是一種不明智的嘗試進行 MITM SSH 攻擊,或者更有可能是他們試圖插入自己以收集單獨埠和協議(例如 HTTPS)上的流量。
如果您在雲環境中工作,新的機器映像和實例會一直被交換以替換舊的。因此,刪除警告並繼續通過 SSH 連接到新主機的方法就是從
~/.ssh/known_hosts
文件中刪除帶有舊指紋的違規行。按照良好的做法,最好在知道更換發生後立即刪除它,然後登錄一次以確認並儲存新的主機密鑰。最後,尊重你的管理員同事,讓他們知道這件事已經發生,這樣他們就不會覺得有必要自己拉火警。
腳本後(或者,檢查 ssh-keygen -R 失敗)
我找到了與您所做的頁麵類似的頁面,並且有一條關於新行為的註釋,它可能會將公共主機密鑰的標識更改為一些我以前從未聽說過的雜湊值——而不是
[vpsXXX.ovh.net]
,它可能看起來像[BF8JDF9SS@67IX]
反而。如果是這種情況,並且您沒有進行太多編輯,則可以移動known_hosts 文件,通過 ssh 連接,這將創建一個包含一行的新文件。該行將具有您連接到的域或 IP 的正確雜湊值,因此您可以從新創建的文件中用新的主機密鑰替換舊的主機密鑰。將已編輯的 known_hosts 文件移回原位,瞧,您已為該連接更新了儲存的公共主機密鑰。