gpt4 book ai didi

java - SFTP 连接器 DH key 错误

转载 作者:行者123 更新时间:2023-11-30 02:08:01 24 4
gpt4 key购买 nike

我正在 Anypoint Studio 中创建一个简单的 Mule 流程 - 它定期轮询目录,当文件放置在目录中时,它会将其发送到 SFTP 服务器。但是,当应用程序开始与服务器协商安全连接时,它会失败并出现以下错误:

java.io.IOException: Error during login to username@host: Session.connect: java.security.InvalidAlgorithmParameterException: DH key size must be multiple of 64, and can only range from 512 to 8192 (inclusive). The specific key size 2047 is not supported

堆栈跟踪引用了 jsch 库中的多个文件。前面问题中的解决方案建议升级到 Java 8、使用不同版本的 jsch 或自行编辑 jsch jar。我的 Mule 服务器(版本 3.9.0 EE)已经在 J​​ava 8 上,我尝试了几个不同版本的 jsch,编辑 jar 是不切实际的,因为这个应用程序将部署到几个不同的环境。

我能够使用与应用程序相同的凭据通过 WinSCP 登录到 sftp 服务器。一位同事尝试修改工作流程以使用相同的凭据来移动相同的文件,但他们遇到了相同的错误。这是我的流程的 XML:

<flow name="ClCoFlow">
<file:inbound-endpoint path="${file.from}"
moveToDirectory="${file.backup}" responseTimeout="10000"
doc:name="Get File to Transfer" />
<logger
message="#[flowVars.originalFilename] being moved to #[flowVars.moveToDirectory]"
level="INFO" doc:name="File In" />
<sftp:outbound-endpoint exchange-pattern="one-way"
host="${sftp.host}" port="${sftp.port}" path="${sftp.path}" user="${sftp.user}"
password="${sftp.password}" responseTimeout="10000" doc:name="SFTP" />
<logger message="#[flowVars.originalFilename] sent to sftp service"
level="INFO" doc:name="File sent" />
</flow>

预先感谢您提供的任何帮助

编辑

虽然 Mule 是基于 Java 构建的,并且 Mule 应用程序是使用 Java 和 Spring 在幕后构建的,但创建 Mule 流程时不需要编写实际的 Java 代码。

最佳答案

更改提供商似乎是解决问题的方法。不幸的是,Mule 连接器无法做到这一点,因此我们必须用纯 Java 重新编写 sftp 连接器。下载 bouncycaSTLe .jar 后,将它们放入 src/main/app/lib 中,然后将它们添加到构建路径中。您应该能够导入它们(由于某种原因我必须导入 org.python.bouncycaSTLe.jce.provider 而不是 org.bouncycaSTLe.jce.provider)。在我的代码顶部我放置了:

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

当流程运行时,dh key 已正确协商并且不会引发任何错误。

关于java - SFTP 连接器 DH key 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50935279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com