簡體   English   中英

由於java.security.InvalidAlgorithmParameterException,SFTP連接失敗

[英]SFTP connection Failed due to java.security.InvalidAlgorithmParameterException

我正在嘗試使用SFTP連接到配置較少密碼的服務器。 使用終端成功進行Sftp連接。 但是,當我通過用戶名和密碼在JAVA(使用Jsch庫)中進行連接時,無法連接。 我的Java代碼:-

try {
        try {
            jsch.addIdentity(ftp_Info.getSftpCertFile());
        } catch (Exception e) {
            // TODO: Add a log message
        }
        session = jsch.getSession(ftp_Info.getUserName(), ftp_Info.getHost(), ftp_Info.getPort());
        String pswd = (password_encypted) // password encryption
        session.setPassword(pswd);
        session.setConfig("StrictHostKeyChecking", "no");
        session.setConfig("PreferredAuthentications", "password,hostbased,publickey");
        session.connect(); // exception occurred here
        session.setTimeout(connectionTimeOut);
        Channel channel = session.openChannel(SFTP);
        channel.connect();
        sftpChannel = (ChannelSftp) channel;

    } catch (Exception e) {
        log.error(e.getMessage(), e);//error logged here
    }

我收到以下異常:-

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

請幫助進行故障排除或解決。 除了第三方服務提供商之外,是否有其他方法可以使我的2048位密鑰通過此異常?

在1.7以下,我假設您正在為項目使用Maven。 我會在您的pom中添加bouncycastle依賴項。

<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk16</artifactId>
    <version>1.45</version>
</dependency>

這在jdk 7下應該可以正常工作。

然后添加一行代碼以將BouncyCastle提供程序添加為第一個提供程序。

Security.insertProviderAt(new BouncyCastleProvider(),1);

我會將其放在您的getSftpCertFile()調用之前以及任何與SSL相關的代碼之前。 如果您不使用Maven或擁有其他基礎架構,請告訴我。 您可以在JRE級別配置安全提供程序,但如果可能不影響其他項目,我總是希望在項目級別進行配置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM