使用session.setConfig建立JSch SFTP安全性(“StrictHostKeyChecking”,“no”);

时间:2015-05-11 22:53:36

标签: sftp jsch public-key key-pair

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

  1. jsch.addIdentity(privatekeyfile);
  2. Session session = jsch.getSession(“user”,“domain.com”,22);
  3. session.setConfig(“StrictHostKeyChecking”,“no”);
  4. 第3行有问题。没有这一行,JSch就无法工作。

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

2 个答案:

答案 0 :(得分:6)

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

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

如果有疑问,最好更安全地犯错误。我建议启用StrictHostKeyChecking并使用setKnownHosts method提供包含远程主机密钥的文件。

答案 1 :(得分:1)

是的,它会使连接(和传输)不安全。特别是,它使连接对Man-in-the-middle attacks开放。

除非您不关心安全性(例如在专用网络内连接时),否则不应将StrictHostKeyChecking设置为no

“没有这一行,JSch无法正常工作”。您只需要让代码接受预期服务器的主机密钥。通过setKnownHostssetHostKeyRepository方法。

例如,请参阅How to resolve Java UnknownHostKey, while using JSch SFTP library?

您可以阅读verifying the host key上的文章,了解其重要性。它是关于WinSCP SSH / SFTP客户端,但对于任何SSH客户端/库通常都是如此。