我使用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论坛中找不到这样的东西,因此在这里发布。
答案 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>);