[英]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.