首页 >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