JSch SFTP ライブラリでの Java UnknownHostKey の問題の解決
Java SFTP ライブラリ (JSch) を使用すると、「UnknownHostKey」エラーが発生する場合があります厳格なホストキーチェックのため。このエラーは、JSch がリモート サーバーによって提示されたホスト キーの信頼性を検証できないために発生します。
根本原因:
リモート SFTP に接続しようとすると、エラーが発生します。初めてのサーバー。 JSch はホスト キー チェックを実行して、悪意のある偽者ではなく正しいサーバーに接続していることを確認します。
解決策:
この問題を解決するには、2 つの一般的なアプローチがあります。
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
「JSch.setKnownHosts(path)」を使用してファイルを指します:
JSch.setKnownHosts("path/to/known_hosts");
ホストの追加鍵手動:
HostKey をホスト キーに追加しますリポジトリ:
JSch jsch = new JSch(); HostKey hostKey = jsch.getHostKeyRepository().add(hostname, publicKey, algName);
追加メモ:
指定したホスト キーがリモート サーバーによって提示された実際のキーと一致することを確認してください。キーが一致しない場合でも、セキュリティ例外により接続は失敗します。
以上がJSch の SFTP ライブラリを使用するときに発生する「UnknownHostKey」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。