java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
在上面的代码中,为什么我们需要在通过JSch API连接到SFTP时将StrictHostKeyChecking
值设置为no
?
答案 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将拒绝连接到主机密钥已更改的主机。