技術答疑 · 實用指南
SSH 顯示「REMOTE HOST IDENTIFICATION HAS CHANGED」?刪除舊金鑰前先驗證端點與指紋
不要只為消除警告就刪除 known_hosts 或關閉驗證。先確認 SSH 實際使用的主機名稱、位址、連接埠、跳板路徑與信任檔案,再透過獨立可信管道取得預期指紋;完全相符後才移除精確的舊記錄。

SSH 主機金鑰警告是身分驗證失敗,而非一般連線錯誤。修改本機信任記錄前,必須證明連到哪一台伺服器,以及它應提供哪一把金鑰。
把警告當成證據,而不是障礙
OpenSSH 會將伺服器的公開主機金鑰保存在 known_hosts。當同一端點提供不同金鑰時,預設的嚴格校驗會拒絕連線,因為客戶端無法自行判斷是重建、輪替、遷移,還是主機遭到替換或連線遭攔截。清理前先驗證身分。
保存完整警告,包括主機名稱、IP、連接埠、金鑰類型、SHA256 指紋、檔案及行號。VS Code Remote SSH、Git、rsync、IDE 或自動化工具可能使用不同設定、連接埠、跳板主機或信任檔案。
1. 確認 SSH 實際抵達的端點
查看 `ssh -G host` 展開的設定,核對 `hostname`、`port`、`proxyjump`、`proxycommand`、`userknownhostsfile` 和 `globalknownhostsfile`。簡短別名可能指向另一個 DNS 名稱、經跳板主機存取的私有位址或非標準連接埠。
使用平常的網路路徑解析有效主機名稱,並與警告、資產清單、雲端主控台或管理員記錄比對。VPN 分割 DNS、負載平衡器、重用的雲端位址及跳板主機都可能把熟悉的名稱導向另一台機器;路徑無法解釋就停止。
另查 `hostkeyalias`:若有設定,主機金鑰資料庫查詢會使用該別名,而非真實主機名稱。使用 SSH 實際報告的信任身分與檔案,別把命令列暱稱直接當作已儲存的名稱。
2. 從帶外可信管道取得預期指紋
使用不依賴爭議 SSH 連線的可信管道,例如已驗證的供應商主控台、序列或復原主控台、組態管理記錄或已確認的管理員。管理員可在伺服器主控台執行 `ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub`,並查詢其他啟用的主機金鑰。
取得演算法及完整 SHA256 指紋。維護通知可以解釋輪替,卻不能取代指紋。`ssh-keyscan` 只觀察目前網路路徑提供的金鑰,無法獨立證明伺服器身分。
3. 以相同演算法逐項比較
以相同演算法比較:ED25519 對 ED25519、RSA 對 RSA、ECDSA 對 ECDSA。伺服器可能只輪替一種演算法,其他已儲存的金鑰仍然有效,因此先確認客戶端實際協商的主機金鑰。
只有端點得到合理說明、提示的指紋與獨立取得的值完全相符,才能繼續。若不符,聯絡負責人並保留舊記錄。警告中的行號是診斷資訊,不是信任替代金鑰的許可。
4. 定位精確的 known_hosts 記錄
備份警告指定的檔案,再執行 `ssh-keygen -F host`;非標準連接埠使用 `ssh-keygen -F '[host]:2222'`。若曾儲存解析後的 IP,也另外查詢。`-F` 可查找雜湊主機名稱,不必刪除其他記錄。
若使用另一個信任檔案,加上 `-f /path/to/file`。系統層級檔案可能需要管理員處理。有跳板主機時,先確認警告屬於跳板主機還是最終目標。
5. 只移除已驗證的舊端點
指紋相符且變更原因確認後,才執行 `ssh-keygen -R host`;非標準連接埠使用 `ssh-keygen -R '[host]:2222'`,必要時加上 `-f /path/to/file`。主機名稱與 IP 記錄需分別確認。
新連線驗證完成前保留備份。不要刪除整個 `~/.ssh/known_hosts`、大量刪除相似行或關閉嚴格校驗;這會破壞證據並削弱其他伺服器的保護。
`ssh-keygen -R` 會移除指定檔案中該主機名稱或 [主機名稱]:連接埠的全部金鑰,不只發生變更的演算法。先檢查每筆相符記錄;若受管記錄或其他演算法的有效性不明,請管理員處理。
6. 重新連線一次並再次驗證
以互動方式重新連線,核對端點及演算法,在接受前再次將畫面上的指紋與可信值比較。記錄變更原因、可信來源、新舊指紋、時間及批准者。
若金鑰再次變更、同一名稱後方的不同伺服器提供無法解釋的金鑰,或只有特定客戶端及網路持續警告,應停止並調查。可能涉及 DNS 不一致、負載平衡器、非預期代理、不同信任檔案或安全事件。
合法變更與升級條件
保留靜態 IP 的虛擬機器重建、有記錄的金鑰輪替、映像還原、設備更換或別名移動,都可能合法改變金鑰。負責人仍須確認端點與指紋;熟悉的位址也可能已經屬於另一台機器。
若無人預期變更、無法從可信主控台取得指紋、DNS 或路由異常、指紋不符或金鑰反覆改變,立即升級處理。身分未釐清前不要輸入憑證或執行敏感指令。
