当前位置: 首页 > 知识库问答 >
问题:

无法连接到sftp:com.jcraft.jsch.jschException:算法协商失败

叶煌
2023-03-14

Out FTP服务器进行了迁移,以获得更好的安全性(不知道关于它的很多细节)。

但升级后,我们无法从服务器下载/上传文件。在升级之前它工作得很好。错误日志显示:

NS0:html" target="_blank">客户端无法连接到FTP服务器。http://schemas.cordys.com/ftpconnector/1.1cordys.ftpconnector.messages.ftpserverconnectionfailedcom.eibus.applicationconnector.FTP.ftpexception:算法协商失败

在com.eibus.applicationconnector.ftp.Cordyssftpclient.connect(Cordyssftpclient.java:78)在com.eibus.applicationconnector.ftp.ftpcommand.connect(Ftpcommand.java:86)在com.eibus.applicationconnector.ftp.ftptransaction.process(Ftptransaction.java:109)在com.eibus.applicationconnector.ftp.ftptransaction.process(Ftptransaction.java:109)在com.eibus.soap.soaptransaction.ssion.receive_kexinit(session.java:520)在com.jcraft.jsch.session.connect(session.java:286)在com.jcraft.jsch.session.connect(session.java:150)在com.eibus.applicationconnector.ftp.cordyssftpclient.connectOnce(cordyssftpclient.java:124)在com.eibus.applicationconnector.ftp.cordyssftpclient.connect(cordyssftpclient.java:64)...11其他

使用的jsch jar版本为:jsch-0.1.41,使用的jar java版本为:1.7.0_40

请注意

  1. 我们不拥有FTP服务器,无法更改其中的任何设置。
  2. 不能升级Java版本

com.eibus.applicationconnector.ftp.ftpexception:session.connect:java.security.invalidAlgorithmParameterexception:Prime大小必须是64的倍数,并且只能在512到1024(含)之间(在com.eibus.applicationconnector.ftp.cordyssftpclient.connect(Cordyssftpclient.java:78)在com.eibus.applicationconnector.ftp.ftpcommand.connect(Cordyssftpclient.java:86)在onTransactionalWorkerThreadBody.java:26)在com.eibus.util.ThreadPool.WorkerThread.Run(WorkerThread.java:67)处由:com.jcraft.jsch.jschException:session.connect:java.Security.InvalidAlgorithmParameterException:Prime大小必须是64的倍数,并且只能在512到1024(含)的范围内,在com.jcraft.jsch.session.connect(session.java:565)处,在

试用2:安装了无限强度管辖策略文件(www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html),这也没有用。得到了同样的错误

任何指示都会有帮助。

下面是我用来连接FTP的一段代码:

private void connectOnce(FTPConfiguration ftpConfiguration) throws JSchException {
    JSch jsch = new JSch();
    this.session = jsch.getSession(ftpConfiguration.getUsername(), ftpConfiguration.getServer(), ftpConfiguration.getPort());
    this.session.setPassword(ftpConfiguration.getPassword());

    Properties config = new Properties();
    config.put("StrictHostKeyChecking", "no");
    this.session.setConfig(config);

    if (logger.isDebugEnabled()) {
      logger.debug("Opening SFTP connection to " + ftpConfiguration.getServer());
    }
    this.session.connect();
}

共有1个答案

孔飞舟
2023-03-14

我想我找到解决办法了。

解决方案涉及修改jsch源代码。(最新版本1.0.54)。我做了一些研究,最终能够迫使jsch使用“Bouncy Castle”安全提供程序。这涉及到更改jsch库中以下类的源代码:

  • com.jcraft.jsch.jce.keyPairgendsa
  • com.jcraft.jsch.jce.KeyPairGeneCDSA
  • com.jcraft.jsch.jce.KeyPairGenrsa
  • com.jcraft.jsch.jce.dh

每当它试图对keygenerator进行geInstance时,我都添加了以下参数。

KeyPairGenerator.getInstance("DSA","BC"); 

从这篇文章中获得了一些想法(我已经将security.provider.1=org.bouncycastle.jce.provider.bouncycastleprovider,但在SSL握手期间没有使用它)

 类似资料:
  • 问题内容: 我正在尝试使用JSch(0.1.44-1)通过ssh连接到远程sftp服务器,但是在“ session.connect();”期间 我收到此异常: 来自JSch的日志: 我可以使用linux sftp命令登录到远程服务器。我试图在互联网上找到任何线索,但是失败了。 linux sftp命令的调试输出: 问题答案: SSH客户端和服务器在几个地方尝试并同意一个通用实现。我知道的两个是加密

  • 问题内容: 我正在尝试从Jenkins SSH到本地服务器,但抛出以下错误: SSH服务器上Java的安装版本: 客户端上的Java安装版本: 还尝试了以下解决方案: JSchException:算法协商失败, 但是不起作用。从油灰看来,一切正常。建立了连接,但是当我触发Jenkins作业时,将引发错误。我应该尝试其他版本的ssh服务器。现在我正在使用copssh。 问题答案: TL; DR编辑您

  • SSHException:协商失败。 是不是我错过了什么地方? 我最初假设问题是围绕hostkeys发生的,但是我得到了相同的结果,或者传递一个hostkeys文件,或者将hostkeys设置为None(使用pysftp) 这似乎发生在连接的早期,就好像我使用随机的用户名或密码,我得到的结果完全一样 调试信息如下: 如果我(成功)通过连接并启用了日志记录,我将获得以下日志:

  • 我试图用Arquillian和Wildfly(8.1.0.Final和8.2.0.Final tested)容器运行一个简单的JPA测试(persist,read,JSON serialize),但是到目前为止我还不能将test.war部署到嵌入式服务器上。测试使用JBoss7.1.1.final容器运行。 我使用了Arquillian入门指南和Arquillian示例项目(Google:gith

  • 问题内容: 我一直在网上搜索,发现了类似的帖子,但是找不到阅读它们的解决方案。 我试图从计算机上使用ssh连接到NetBackup服务器,并运行报告并基于它们创建图形。我正在使用Java和JSch库执行此操作。问题是我得到: com.jcraft.JSch.Session.recieve_kexinit(…上的“算法协商失败” 我对协商和密钥以及diffie-hellman等不同方法知之甚少。请您

  • 问题内容: 我正在尝试使用Ruby on Rails运行Selenium的示例脚本。我必须使用代理运行它。这是我的代码: 我收到以下错误: 有人能帮我吗…?我已经尝试了好几个小时,却找不到问题…真的不知道该怎么办。 环境: Ubuntu 16.04 LTS,Firefox 45.0,rbenv 2.3.1 另一个问题:有人知道Selenium + Ruby on Rails的示例吗?我找不到真正好