JSch SFTP 安全 session.setConfig("StrictHostKeyChecking", "no");

JSch SFTP security with session.setConfig("StrictHostKeyChecking", "no");

我使用带有私钥的 JSch 到 FTP 文件

  1. jsch.addIdentity(私钥文件);
  2. 会话会话 = jsch.getSession( "user", "domain.com" ,22);
  3. session.setConfig("StrictHostKeyChecking", "no");

第 3 行有问题。没有这条线,JSch 将无法工作。

我的问题是: 第 3 行会使 SFTP 传输不安全吗?

禁用 StrictHostKeyChecking 选项会使连接的安全性低于启用该选项,因为它会让您连接到远程服务器而无需验证其 SSH 主机密钥。如果启用该选项,您将只能连接到您的 SSH 客户端已知密钥的服务器。

您必须决定这对您的特定用例意味着什么 - 您连接的服务器是在私有本地网络上还是通过互联网连接?这是测试环境还是生产环境?

如有疑问,最好还是宁愿选择更安全的方式。我建议启用 StricktHostKeyChecking 并使用 setKnownHosts method 来提供包含远程主机密钥的文件。

是的,它会降低连接(和传输)的安全性。特别是,它使连接打开 Man-in-the-middle attacks.

永远不要将 StrictHostKeyChecking 设置为 no,除非您不关心安全性(例如在专用网络中连接时)。

"Without this line, JSch does not work"不正确。您只需让您的代码接受预期的服务器主机密钥。通过 setKnownHosts or the setHostKeyRepository 方法。

有关示例,请参阅


您可以阅读我在 verifying the host key 上的文章以了解其重要性。它是关于 WinSCP SSH/SFTP 客户端的,但它通常适用于任何 SSH client/library。