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

kin*_*esh 8 java ssh sftp jsch public-key

java.util.Properties config = new java.util.Properties();            
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ryl 6

你不应该实际设置它。这样做会失去大部分 SSH/SFTP 安全性。

该选项告诉 JSch SSH/SFTP 库不要验证 SSH/SFTP 服务器的公钥。如果您不验证公钥,您很容易受到中间人攻击。当然,除非您在私人可信网络内连接(因此您不关心安全/加密)。

阅读有关 SSH/SFTP 主机密钥的信息:https :
//winscp.net/eng/docs/ssh_verifying_the_host_key


小智 6

StrictHostKeyChecking 值:询问 | 是 | 不

默认:询问

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

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

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

  • 这并不完全准确。这个答案所说的是 OpenSSH `ssh` 客户端(以及其他类似 `sftp`)的行为。--- JSch 不会隐式使用 `known_hosts` 文件,除非您告诉它。JSch 也不会“询问”任何内容,除非您提供提示代码。 (4认同)