首页 > Java > java教程 > 如何解决使用JSch的SFTP库时出现'UnknownHostKey”错误?

如何解决使用JSch的SFTP库时出现'UnknownHostKey”错误?

Susan Sarandon
发布: 2024-12-05 12:37:14
原创
326 人浏览过

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”实例。
  • 将 HostKey 添加到主机密钥存储库:

    JSch jsch = new JSch();
    HostKey hostKey = jsch.getHostKeyRepository().add(hostname, publicKey, algName);
    登录后复制

额外注意:

确保您提供的主机密钥与远程服务器提供的实际密钥匹配。如果密钥不匹配,连接仍然会因安全异常而失败。

以上是如何解决使用JSch的SFTP库时出现'UnknownHostKey”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板