使用JSch连接到VShell时,“在1024和1024之间没有适当的素数可用”

时间:2015-07-27 18:49:46

标签: java ssh 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 Server时出现以下错误: -

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论坛中找不到这样的东西,因此在这里发布。

2 个答案:

答案 0 :(得分:2)

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

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

来自VShell 4.1.1 history file:&#34;鉴于SSH密钥交换存在潜在漏洞,类似于TLS Logjam漏洞,不再启用diffie-hellman group1密钥交换算法默认情况下,所有1024位素数已从VShell的primes.txt文件中删除。&#34;

答案 1 :(得分:1)

在Google上搜索错误消息I've found

  

已知此问题是由VShell具有空的primes.txt文件并使用diffie-hellman组交换引起的。

     

作为SecureFX客户端的解决方法,您可以将diffie-hellman移动到会话选项/连接/ SSH2 /密钥交换中的列表顶部,看看您是否能够通过错误?

检查服务器上的primes.txt

或尝试使用

选择其他密钥交换算法
config.put("kex", <preference list>);