簡體   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