首頁 > Java > java教程 > 如何解決使用JSch的SFTP函式庫時出現「UnknownHostKey」錯誤?

如何解決使用JSch的SFTP函式庫時出現「UnknownHostKey」錯誤?

Susan Sarandon
發布: 2024-12-05 12:37:14
原創
330 人瀏覽過

How to Resolve the

使用JSch SFTP 庫解決Java UnknownHostKey 問題

使用Java SFTP 庫(JSch) 時,您可能會遇到“UnknownHostKey”由於嚴格的主機密鑰檢查。引發此錯誤的原因是 JSch 無法驗證遠端伺服器提供的主機金鑰的真實性。

根本原因:
當您嘗試連接到遠端 SFTP 時發生錯誤第一次使用伺服器。 JSch 執行主機金鑰檢查,以確保您連接到正確的伺服器而不是惡意冒名頂替者。

解:
有兩種常見方法可以解決此問題:

1。跳過主機金鑰檢查:
此方法不建議,因為它會損害您的連線安全。但是,如果您確定主機金鑰是可信任的,則可以在連接到伺服器之前將「StrictHostKeyChecking」屬性設為「no」來停用主機金鑰檢查:

java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
登入後複製

2 .新增預期的主機金鑰:
為了增強安全性,建議將預期的主機金鑰新增至JSch 的主機金鑰儲存庫。這可以使用以下方法之一來實現:

產生已知主機檔案:

  • 從*nix 伺服器執行以下命令:

    ssh-keyscan example.com > known_hosts
    登入後複製
  • 將產生的「known_hosts」檔案放置在某個位置JSch可以訪問。
  • 使用「JSch.setKnownHosts(path)」指向檔案:

    JSch.setKnownHosts("path/to/known_hosts");
    登入後複製

手動新增主機>

  • 手動新增主機>
  • 從下列位置擷取主機金鑰使用SSH工具(例如“ssh-keyscan”)連接伺服器。

    使用檢索到的金鑰建立 JSch「HostKey」實例。
    JSch jsch = new JSch();
    HostKey hostKey = jsch.getHostKeyRepository().add(hostname, publicKey, algName);
    登入後複製
將HostKey 新增至主機金鑰儲存庫:

額外注意:額外注意:確保您提供的主機金鑰與遠端伺服器提供的實際金鑰相符。如果密鑰不匹配,連線仍然會因安全性異常而失敗。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板