首頁 >Java >java教程 >如何使用 JSch 解決 Java SFTP 中的「UnknownHostKey」錯誤?

如何使用 JSch 解決 Java SFTP 中的「UnknownHostKey」錯誤?

Barbara Streisand
Barbara Streisand原創
2024-12-21 04:05:09413瀏覽

How to Resolve the

使用JSch 解決Java SFTP 中的UnknownHostKey 錯誤

當JSch 在建立SFTP 連接時遇到未知主機時,會出現未知金鑰時,會出現未知主機“UnknownHostKey”錯誤。要解決此問題,您需要向 JSch 提供預期的主機金鑰以進行身份驗證。

設定 StrictHostKeyChecking

最初,您嘗試透過設定「停用主機金鑰檢查」在連接到 SFTP 伺服器之前,將「StrictHostKeyChecking」設定為「no」。這是一個安全風險,除非絕對必要,否則不應這樣做。

正確的方法:設定預期的主機金鑰

相反,您應該為JSch 進行驗證。有兩種主要方法可以實現此目的:

使用known_hosts檔案

  • 使用「ssh-keyscan」產生「.ssh/known_hosts-like」檔案命令。
  • 使用「JSch.setKnownHosts()」設定此檔案的路徑在建立 SFTP 會話之前。
ssh-keyscan example.com > known_hosts
JSch.setKnownHosts("path/to/known_hosts");

使用 HostKeyRepository

  • 使用預期的公鑰手動建立 HostKey 實例。
  • 使用以下指令將HostKey 加入HostKeyRepository "JSch.getHostKeyRepository().add()".
// Create HostKey from public key
HostKey key = new HostKey("example.com", "rsa", ...);

// Add HostKey to repository
JSch.getHostKeyRepository().add(key);

注意:

注意:兩種方法都確保JSch 可以使用預期的主機金鑰驗證SFTP伺服器的真實性,從而解決“UnknownHostKey”錯誤。

以上是如何使用 JSch 解決 Java SFTP 中的「UnknownHostKey」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn