无法使用JSch和Java 8的密钥文件连接到SFP服务器

时间:2015-06-25 04:50:20

标签: java jsch

我正在尝试使用2048位RSA密钥文件连接到SFTP服务器。使用JSch可以很好地运行JRE的7r45版本,但是当我对JRE的版本8r31运行时,我得到了以下异常。

com.jcraft.jsch.JSchException: Session.connect: java.security.InvalidAlgorithmParameterException: Prime size must be multiple of 64, and can only range from 512 to 2048 (inclusive).

这不是一个有限的Java安全策略的问题,因为我已经尝试过,无论两个版本的java都有无限制的强度jar。

我已经看到对此异常的其他引用建议用BouncyCastle替换默认的java JCE提供程序,但为什么java 7和java 8之间会有区别?我通过跑步尝试了这个 Security.addProvider(new BouncyCastleProvider());在计划启动时,但它似乎没有任何区别。

2 个答案:

答案 0 :(得分:1)

我们的案例中的问题似乎是通过在调用session.connect()之前删除diffie-hellman-group-exchange-sha1来修复/解决的。

String kex = session.getConfig("kex");
System.out.println("old kex:" + kex);
kex = kex.replace(",diffie-hellman-group-exchange-sha1", "");
session.setConfig("kex", kex);
System.out.println("new kex:" + session.getConfig("kex"));
session.connect();

[我们控制客户端,但不控制我们无法连接的服务器。]

答案 1 :(得分:0)

我们已经通过在SFTP服务器上启用diffie-hellman-group14算法解决了这个问题