繁体   English   中英

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

[英]Cannot connect to SFP sever using key file with JSch and Java 8

我正在尝试使用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());尝试这个Security.addProvider(new BouncyCastleProvider()); 在程序启动但它似乎没有任何区别。

在调用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();

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM