如何修復 “Warning: Remote Host Identification Has Changed” 錯誤

錯誤型別:
其他錯誤
錯誤名稱:
警告:远程主机标识已更改
英文名稱:
Warning: Remote host identification has changed
錯誤描述:
如果客户端认为这些指纹与它理解的正确指纹不同,你就会收到 "Warning: Remote host identification has changed" 错误。

如何修復 "Warning: Remote Host Identification Has Changed" 錯誤

安全的網際網路連線不僅是理想狀態,而且是必不可少的。事實上,我們甚至可以說這是網站的第一要務。警告: 遠端主機標識已更改 “錯誤可保護您的連線免受某些惡意攻擊,但在某些情況下,您也可能無意中導致該錯誤。

該錯誤與安全殼(SSH)金鑰和客戶端將檢查的伺服器 “指紋” 有關。如果 Secure Shell 認為有問題,它就會阻止對伺服器的訪問併產生錯誤。但你只需幾步就能解決這個問題。

在接下來的幾分鐘裡,我們將向你展示如何修復 “Warning: Remote host identification has changed(警告:程主機標識已更改)” 錯誤。首先,讓我們來詳細介紹一下錯誤資訊本身。

什麼是 “Warning: Remote Host Identification Has Changed” 錯誤?

連線網路伺服器最安全的方法之一是使用 SSH。這是一種命令列工具,能讓你安全地訪問不安全的網路。可以把它看成是一種 “超級 SFTP” 型別的設定,儘管在實踐中並不能進行 1:1 的比較。

只要有正確的登入憑證,你幾乎可以在任何可以使用網際網路的地方訪問你的網站。此外,大多數 MacOS 和 Linux 機器的作業系統(OS)都內建了 SSH 客戶端。對於 Windows,你需要使用一個專用介面(稍後我們將詳細討論)。

至於 “警告: 遠端主機標識已更改 “錯誤,這與客戶端將進行的安全檢查有關。SSH 連線使用專用 “金鑰”(儲存在計算機上的小檔案)作為身份驗證。這有點像安全套接字層(SSL)握手,事實上,SSH 和 SSL 之間有一些高層次的相似之處。

金鑰的作用之一是提供主機伺服器的永久指紋。這將確保連線準確無誤,不會受到 “中間機器” 攻擊

如果客戶端認為這些指紋與它理解的正確指紋不同,你就會收到 “Warning: Remote host identification has changed” 錯誤:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
[user@hostname ~]$ ssh root@user
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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
xx:xx:xx.
Please contact your system administrator.
Add correct host key in /home/hostname /.ssh/known_hosts to get rid of this message.
Offending RSA key in /var/lib/sss/pubconf/known_hosts:4
RSA host key for user has changed and you have requested strict checking.
Host key verification failed.
[user@hostname ~]$ ssh root@user @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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 xx:xx:xx. Please contact your system administrator. Add correct host key in /home/hostname /.ssh/known_hosts to get rid of this message. Offending RSA key in /var/lib/sss/pubconf/known_hosts:4 RSA host key for user has changed and you have requested strict checking. Host key verification failed.
[user@hostname ~]$ ssh root@user
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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
xx:xx:xx.
Please contact your system administrator.
Add correct host key in /home/hostname /.ssh/known_hosts to get rid of this message.
Offending RSA key in /var/lib/sss/pubconf/known_hosts:4
RSA host key for user has changed and you have requested strict checking.
Host key verification failed.

就錯誤而言,這是一個詳細而清晰的錯誤-它會告訴你發生了什麼、可能的原因以及如何修復。

不過,在向你展示如何修復 “Warning: Remote host identification has changed” 錯誤。

已知主機檔案如何幫助 SSH 驗證

你會發現,錯誤資訊中提到了一個 known_hosts 檔案。從檔名就能看出它包含的內容,但為了清楚起見,它是計算機已知的 SSH 遠端主機列表。它被用作身份驗證過程中的參考客戶端檔案。

第一次連線伺服器時,你通常會在介面上收到一個確認請求,詢問你是否要連線。如果要連線,該指紋就會成為 known_hosts 檔案的一部分。

當然,如果該指紋與 known_hosts 檔案中的指紋不同,則可能表明有惡意使用者正在攻擊你。在其他情況下,你可能已經知道為什麼會出現差異,但無論如何都要保持警惕。

如何修復 “Warning: Remote Host Identification Has Changed” 錯誤

您可以修復 Windows 和 macOS 都會出現 “Warning: Remote host identification has changed” 錯誤。不過,在 Mac 上這樣做的靈活性更大。

從 Windows 開始,我們將介紹許多可以恢復正常的方法。

注:除非你完全確信問題不是惡意的,否則不要嘗試修復錯誤。如果你確定你的連線不存在安全隱患,下面的步驟就是為你準備的。

1. Windows

需要注意的是,Windows 機器可能沒有 known_hosts 檔案。但如果使用 OpenSSH 客戶端,則會有一個檔案。要找到它,請開啟 Windows 搜尋欄,使用 %USERPROFILE% 命令導航到使用者資料夾。

這將在檔案資源管理器中開啟該目錄。其中還會有一個 .ssh 資料夾:

Windows 檔案資源管理器

Windows 檔案資源管理器

該資料夾中的檔案是 known_hosts。你可以用記事本(或你喜歡的文字編輯器)開啟它。檔案中會有一個鍵值列表:

Windows 的 known_hosts 檔案

Windows 的 known_hosts 檔案

在這裡,你可以刪除導致問題的金鑰,然後重新儲存檔案。

有些使用者可能更喜歡 PuTTY 客戶端。這些鍵值位於登錄檔中,但其作用與 OpenSSH 相同。

你需要開啟 Windows 登錄檔編輯器(又稱 “regedit”)。你可以用自己喜歡的方式開啟,但最快捷的方法是在 Window 的搜尋欄中輸入應用程式的名稱:

Windows 開始選單中的登錄檔編輯器連結

Windows 開始選單中的登錄檔編輯器連結

在此,在 regedit 中查詢以下目標:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
HKEY_CURRENT_USER/Software/SimonTatham/PuTTY/SshHostKeys/
HKEY_CURRENT_USER/Software/SimonTatham/PuTTY/SshHostKeys/
HKEY_CURRENT_USER/Software/SimonTatham/PuTTY/SshHostKeys/

您將在此看到與計算機上儲存的連線相關的條目列表。您的任務就是刪除造成問題的連線:

在 regedit 中刪除登錄檔鍵值

在 regedit 中刪除登錄檔鍵值

點選 “Delete” 按鈕後,還需要確認是否要刪除該鍵:

確認值刪除對話方塊

確認值刪除對話方塊

單擊 “Yes” 意味著金鑰將永遠消失,你應該不會再收到 “Warning: Remote host identification has changed” 錯誤。

2. Mac

Mac 有幾種修復 “警告:遠端主機標識已更改 “錯誤的方法: 遠端主機標識已更改 “錯誤–可以通過高階應用程式(如 SSH Config Editor)或終端。結果都是一樣的,所以我們建議你選擇更舒適(預算更充足)的方式。

我們的首選方法是在終端視窗(或 iTerm2,如果你使用該應用程式)中訪問檔案,並用專用的 NanoVim 編輯器開啟它。這是因為,無論你的經驗水平如何,每個人都可以訪問並直接使用它。

在這裡,我們將使用 Nano。首先,使用最舒服的程式開啟終端:

從 Spotlight 開啟終端

從 Spotlight 開啟終端

在視窗中執行 nano ~/.ssh/known_hosts 命令。這將開啟一個新的 Nano 例項,並顯示 known_hosts 檔案中的金鑰:

使用 Nano 編輯器 known_hosts 檔案

使用 Nano 編輯器 known_hosts 檔案

刪除導致 “Warning: Remote host identification has changed” 錯誤的金鑰,然後儲存更改。

你可能還想刪除整個 known_hosts 檔案,尤其是當你只在一兩個網站上使用 SSH 時。為此,你可以在終端視窗中執行 rm .ssh/known_hosts

在 Mac 上還有一種修改 known_hosts 檔案的方法:在命令列中使用 ssh-keygen 工具。如果你不想深入研究檔案本身,或者只想使用一個網站或金鑰,那麼這種方法就很不錯。

為此,請開啟終端視窗並執行 ssh-keygen,然後輸入伺服器主機名。例如

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ssh-keygen -R server.example.com
ssh-keygen -R server.example.com
ssh-keygen -R server.example.com

這不會問你是否要刪除指定的行,所以在繼續之前要確保你刪除的是正確的行:

使用 ssh-keygen 從已知主機檔案中刪除

使用 ssh-keygen 從已知主機檔案中刪除

完成後,就不會再出現 “Warning: Remote host identification has changed” 錯誤。

小結

網路安全不僅僅是安裝外掛和建立一個強大的密碼。登入伺服器時所使用的連線也需要高度注意。如果不想遭受中間人機器攻擊,就應該在登入時使用 SSH 訪問。

不過,這個系統幾乎太好用了。你可能會收到 “Warning: Remote host identification has changed” 錯誤的原因有很多,有些是無辜的。

無論如何,你都可以通過命令提示符或終端,使用少量命令立即修復錯誤。

評論留言