JSch中config.put(“StrictHostKeyChecking”,“no”)的用法是什么?

时间:2014-07-21 07:01:47

标签: java ssh sftp jsch public-key

java.util.Properties config = new java.util.Properties();            
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);

在上面的代码中,为什么我们需要在通过JSch API连接到SFTP时将StrictHostKeyChecking值设置为no

2 个答案:

答案 0 :(得分:4)

你不应该实际设置它。通过执行此操作,您将失去大部分SSH / SFTP安全性。

该选项告诉JSch SSH / SFTP库不要验证SSH / SFTP服务器的公钥。如果您不验证公钥,则易受man-in-the-middle attacks攻击。当然,除非您在私有可信网络中进行连接(因此您不关心安全性/加密)。

了解SSH / SFTP主机密钥:
https://www.symantec.com/connect/articles/ssh-host-key-protection
https://winscp.net/eng/docs/ssh_verifying_the_host_key

答案 1 :(得分:3)

StrictHostKeyChecking值:问|是的|无

默认:问

如果此属性设置为,则JSch将永远不会自动将主机密钥添加到$HOME/.ssh/known_hosts文件,并拒绝连接到主机密钥已更改的主机。此属性强制用户手动添加所有新主机。

如果此属性设置为,则JSch会自动将新主机密钥添加到用户已知的主机文件中。

如果此属性设置为询问,则只有在用户确认他们真正想要做的事情后,才会将新主机密钥添加到用户已知的主机文件中,并且JSch将拒绝连接到主机密钥已更改的主机。