我使用带有私钥的 JSch 到 FTP 文件
- jsch.addIdentity(私钥文件);
- 会话会话 = jsch.getSession("user", "domain.com" ,22);
- session.setConfig("StrictHostKeyChecking", "no");
3号线有问题。没有这条线,JSch 就无法工作。
我的问题是:第 3 行会使 SFTP 传输不安全吗?
我使用带有私钥的 JSch 到 FTP 文件
3号线有问题。没有这条线,JSch 就无法工作。
我的问题是:第 3 行会使 SFTP 传输不安全吗?
禁用该StrictHostKeyChecking
选项将使连接不如启用该选项安全,因为它可以让您连接到远程服务器而无需验证其 SSH 主机密钥。如果启用该选项,您将只能连接到您的 SSH 客户端已知密钥的服务器。
您必须决定这对您的特定用例意味着什么 - 您是在私有本地网络上连接的服务器还是通过 Internet 连接?这是测试环境还是生产环境?
如有疑问,最好选择更安全的一方。我建议启用StricktHostKeyChecking
并使用该setKnownHosts
方法来提供包含远程主机密钥的文件。
是的,它会降低连接(和传输)的安全性。特别是,它使连接对中间人攻击开放。
除非您不关心安全性(例如在专用网络中连接时),否则您永远不应将其设置为StrictHostKeyChecking
。no
“没有这条线,JSch 不起作用”是不正确的。您只需让您的代码接受预期的服务器主机密钥。通过setKnownHosts
或setHostKeyRepository
方法。
例如,请参阅如何在使用 JSch SFTP 库时解析 Java UnknownHostKey?
您可以阅读我关于验证主机密钥的文章以了解其重要性。它与 WinSCP SSH/SFTP 客户端有关,但对于任何 SSH 客户端/库通常都是如此。