"No appropriate prime between 1024 and 1024 is available" 使用 JSch 连接到 VShell 时

"No appropriate prime between 1024 and 1024 is available" when connecting to VShell with JSch

我已经使用 JSch 编写了一个客户端(通过基于用户名密码的日志记录)。

以下是相关的代码行:-

sshSession = jsch.getSession(userName, host, 22);
sshSession.setConfig("PreferredAuthentications", "password");
sshSession.setPassword(loginInfo);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
sshSession.setConfig(config);
sshSession.connect();

现在在连接 VShell 服务器时出现以下错误:-

com.jcraft.jsch.JSchException: SSH_MSG_DISCONNECT: 11 No appropriate prime between 1024 and 1024 is available.  en
at com.jcraft.jsch.Session.read(Session.java:987)
at com.jcraft.jsch.Session.connect(Session.java:323)
at com.jcraft.jsch.Session.connect(Session.java:183)
at com.informatica.isp.autoprovision.APSSHClient.<init>(APSSHClient.java:65)
at com.informatica.isp.autoprovision.APClient.createAPComputeNode(APClient.java:84)
at com.informatica.isp.autoprovision.test.AWSMockClientTest.test(AWSMockClientTest.java:34)
at com.informatica.isp.autoprovision.test.AWSMockClientTest.main(AWSMockClientTest.java:42)

当我尝试使用 VShell 服务器连接 PuTTY 或 xshell 等 CLI 客户端时,它可以正常工作。在 JSch 中我是否缺少某种设置?我在 VShell 或 JSch 论坛中找不到类似的东西,因此张贴在这里。

谷歌搜索错误消息,I've found:

This problem has been known to be caused by VShell having an empty primes.txt file and using diffie-hellman group exchange.

As a workaround for your SecureFX client, can you move diffie-hellman to the top of the list in Session Options / Connection / SSH2 / Key exchange to see if you're able to get past the error?

检查服务器上的 primes.txt

或尝试 select 另一种密钥交换算法

config.put("kex", <preference list>);

这可能是您的 JSCH 库版本的限制,它可能不允许它成功地与 1024 位素数以外的任何东西执行密钥交换。考虑联系 JCraft,看看他们是否有支持使用更大素数进行 diffie-hellman 组交换的可用版本。如果他们不这样做,请联系您的 VShell 管理员并询问他们是否愿意修改 VShell 4.1.1+ primes.txt 文件以包含 1024 位素数。

作为 logjam research 的一部分,当使用 1024 位和更小的素数时,diffie-hellman 组交换存在潜在漏洞。

来自 VShell 4.1.1 history file:"In light of a potential vulnerability with SSH key exchange, similar to the TLS Logjam vulnerability, the diffie-hellman group1 key-exchange algorithm is no longer enabled by default and all 1024 bit primes have been removed from VShell's primes.txt file."