如何解決 rsync 主機金鑰驗證失敗
主機金鑰驗證失敗訊息是在 rsync 操作期間常見的錯誤。當遠端主機的金鑰發生變化且系統出於安全考慮不允許訪問時,這種情況就會發生。
讓我們今天討論一下這個錯誤的可能原因和修復方法。
主機金鑰驗證失敗錯誤何時出現於 rsync?
Rsync 使用遠端殼層程序,如 SSH 或 RSH 來聯繫遠端伺服器。主機驗證用於確保您正在連接到您認為正在連接的主機。它在第一次登錄時將伺服器的公用主機金鑰附加到使用者的~/.ssh/known_hosts 檔案中,然後在後續連接中將此值與伺服器提供的值進行比較。
如果這種比較失敗,將顯示結果「主機金鑰驗證失敗」。
Host key verification failed.
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.1]
導致此錯誤的可能原因包括:
主機檔案中私鑰不匹配
/dev/tty 的訪問權限不正確
如何修復 rsync 中的主機金鑰驗證失敗錯誤?
現在讓我們討論如何修復 rsync 中的主機金鑰驗證失敗錯誤。
手動刪除舊金鑰
為了修復由於主機金鑰變化而引起的錯誤,我們需要使用以下命令從檔案中刪除主機金鑰:
ssh-keygen -R 主機名稱/IP 地址
然後可能會在下一次登錄時要求進行驗證。一旦確認,它將將新金鑰添加到主機檔案中。
更正權限問題
由於此錯誤可能是由 /dev/tty 檔案的錯誤權限引起的,因此可以通過更正權限來修復它。將檔案的權限設置為 666 可以幫助更正問題。
chmod 666 /dev/tty
替代修復方法
除了上述提到的主要原因外,一些其他原因,如使用錯誤的主機名稱/IP 地址,也可能引發此錯誤。在進行連接時,修正 IP 地址或主機名稱的方法可能是解決問題的辦法。
此外,此錯誤也可以通過禁用 rsync 的主機金鑰檢查來修復。這可以通過將參數 "ssh -o StrictHostKeyChecking=no" 附加到 rsync 命令中來完成。