提问者:小点点

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


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

  1. jsch.add身份文件;
  2. 会话会话=jsch.get会话("用户","domain.com",22);
  3. session.set配置("StrictHostKeyChecking","no");

第3行有问题。没有这一行,JSch就无法工作。

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


共2个答案

匿名用户

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

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

如有疑问,最好在更安全的方面犯错。我建议启用 StricktHostKeyCheck 并使用 setKnownHosts 方法来提供一个包含远程主机密钥的文件。

匿名用户

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

除非您不关心安全性(例如在专用网络内连接时),否则不要将< code > stricthostkey checking 设置为< code>no。

不是“没有这条线,JSch就不行”。您只需要让您的代码接受预期的服务器主机密钥。通过< code>setKnownHosts或< code > sethostkey repository 方法。

有关示例,请参阅如何在使用JSch SFTP库的同时解析JavaUn,nononHostKey?

您可以阅读我关于验证主机密钥的文章,了解它的重要性。它是关于WinSCPSSH /SFTP客户端的,但它通常适用于任何SSH客户端/库。