修復“遠端主機標識已更改!”在伺服器端

修復“遠端主機標識已更改!”在伺服器端

請注意,問題是修復“遠端主機標識已更改!”問題在伺服器端

我知道這意味著什麼,而且我確切地知道我在做什麼——

  • 我正在重新安裝/升級我的伺服器,並希望該過程盡可能順利。
  • 在重新安裝/升級期間,我可能需要多次來回啟動舊版本或新版本。

因此我需要盡可能消除來自客戶端的警告。否則,我需要~/known_hosts不必要地來回翻轉我的文件。

那麼如何將我的新伺服器的指紋/ECDSA密鑰設定為與以前相同呢?

答案1

更新:經過一番思考,我想我會更改我的建議,只複製關鍵文件以及引用它們的配置條目。密鑰檔案都在/etc/ssh/中,並且被命名ssh_host_<keytype>_key並且每個都有一個相應的帶有擴展名的公鑰檔案.pub。以下是包含 dsa、ecdsa、ed25519 和 rsa 金鑰的範例:

$ cd /etc/ssh
$ ls -l ssh_host_*key*
-rw------- 1 root root  668 Apr  8 03:43 ssh_host_dsa_key
-rw-r--r-- 1 root root  606 Apr  8 03:43 ssh_host_dsa_key.pub
-rw------- 1 root root  227 Apr  8 03:43 ssh_host_ecdsa_key
-rw-r--r-- 1 root root  178 Apr  8 03:43 ssh_host_ecdsa_key.pub
-rw------- 1 root root  411 Apr  8 03:43 ssh_host_ed25519_key
-rw-r--r-- 1 root root   98 Apr  8 03:43 ssh_host_ed25519_key.pub
-rw------- 1 root root 1679 Apr  8 03:43 ssh_host_rsa_key
-rw-r--r-- 1 root root  398 Apr  8 03:43 ssh_host_rsa_key.pub

/etc/ssh/sshd_config 中可能有HostKey一些條目告訴 sshd 使用它們。就我而言,這些文件只是預設文件,因此相關行被註解掉:

$ grep HostKey /etc/ssh/sshd_config 
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

您應該能夠從原始伺服器複製金鑰檔案(確保與舊的權限相符),如果有未註解的條目,您也HostKey應該將它們新增至新的設定檔。sshd_config如果您還有任何其他非預設設置,您也需要複製它們。

我最初建議將整個/etc/ssh/目錄從舊伺服器克隆到新伺服器。這樣做的優點是它會自動複製您所做的任何其他設定變更。缺點(也是我決定不推薦它的原因)是舊配置可能不包含為提高安全性而進行的更改。

例如,您的舊配置可能沒有包含自訂 Diffie-Hellman 模數的 /etc/ssh/moduli 文件,而新作業系統版本可能不會自動產生該文件。這將是一個問題,因為預設模數不是很安全,而且由於每個人都使用相同的模數,因此對它的攻擊就是對每個人的攻擊。看這裡這裡了解更多。

如果您的「舊」伺服器配置不是太舊,它應該已經有一個自訂 moduli 文件,但這只是一個範例;可能還有其他東西需要更新,因此使用大部分新的配置可能會更好。順便說一句,使用不同的模數不會導致“ID CHANGED”類型錯誤,因此如果該檔案存在於舊伺服器中,則無需複製它。

相關內容