SFTP连接由于java.security.InvalidAlgorithmParameterException而失败

时间:2017-07-25 05:54:35

标签: java ssh sftp jsch sshd

我正在尝试使用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 个答案:

答案 0 :(得分:0)

在1.7以下,我假设你正在为你的项目使用maven。我会把bouncycastle依赖添加到你的pom。

<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级别配置安全提供程序,但如果可能的话,我总是希望在项目级别进行配置,以免影响其他项目。

相关问题