我使用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)当我试图连接像PuTTY或xshell这样的CLI客户端时,它可以工作。在JSch中是否有我不知何故丢失的设置?因此,我在VShell或JSch论坛上都找不到这样的东西。
发布于 2015-07-28 18:19:16
这可能是JSCH库版本的一个限制,它可能不允许它成功地与1024位素数以外的任何东西执行密钥交换。考虑联系JCraft,看看他们是否有支持使用更大素数用于diffie-hellman组交换的版本。如果没有,请与您的VShell管理员联系,询问他们是否愿意修改VShell 4.1.1+ primes.txt文件以包含1024位素数。
作为logjam 研究的一部分,在使用1024位和较小素数时,diffie-hellman组交换中存在潜在的漏洞。
从VShell 4.1.1 历史档案:“鉴于SSH密钥交换的潜在漏洞,类似于TLS日志阻塞漏洞,diffie-hellman group1密钥交换算法在默认情况下不再启用,所有1024位素数都已从VShell的primes.txt文件中删除。”
发布于 2015-07-28 06:46:33
搜索错误消息,我发现
已知此问题是由VShell具有空primes.txt文件和使用diffie-hellman组交换引起的。 作为您的SecureFX客户端的解决方案,您能否将diffie-hellman移到会话选项/ Connection / SSH2 / Key exchange中列表的顶部,以查看是否能够通过错误?
检查服务器上的primes.txt。
或者尝试选择另一个密钥交换算法。
config.put("kex", <preference list>);https://stackoverflow.com/questions/31660971
复制相似问题