java - 由于 java.security.InvalidAlgorithmParameterException,SFTP 连接失败

标签 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 位 key 通过此异常吗?

最佳答案

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

关于java - 由于 java.security.InvalidAlgorithmParameterException,SFTP 连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45294929/

相关文章:

java - 如何让一个被 ControllerAdvice 注解的类来处理不同类型的异常?

java - 来自用户的 Apache Tomcat 服务器屏蔽过程

azure - ACS 中 Mesosphere 的 SSH 转发失败并显示 "administratively prohibited"

java - 等距字符串,同时对齐它们

JAVA - JTable & Model 的奇怪问题(可能是线程问题)

python - Paramiko ssh exec_command 用于来自 Windows 客户端的 IPv6 服务器

带有 mysql 共享托管数据库的 JavaFx 本地项目

sftp - 无法设置 Sublime Text 3 和 SFTP

c# - 使用 SSH.NET 连接到 OpenSSH 7.4p1 失败并显示 "The server response contains a null character at position"但在 WinSCP 中有效

Python ssh 读取镜像