6

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

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

3号线有问题。没有这条线,JSch 就无法工作。

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

4

2 回答 2

13

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

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

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

于 2015-05-12T05:41:57.427 回答
4

是的,它会降低连接(和传输)的安全性。特别是,它使连接对中间人攻击开放。

除非您不关心安全性(例如在专用网络中连接时),否则您永远不应将其设置为StrictHostKeyCheckingno

“没有这条线,JSch 不起作用”是不正确的。您只需让您的代码接受预期的服务器主机密钥。通过setKnownHostssetHostKeyRepository方法。

例如,请参阅如何在使用 JSch SFTP 库时解析 Java UnknownHostKey?


您可以阅读我关于验证主机密钥的文章以了解其重要性。它与 WinSCP SSH/SFTP 客户端有关,但对于任何 SSH 客户端/库通常都是如此。

于 2015-05-12T05:43:13.497 回答