为了账号安全,请及时绑定邮箱和手机立即绑定

SFTP连接器DH密钥错误

SFTP连接器DH密钥错误

HUWWW 2021-04-02 14:15:32
我正在用Anypoint Studio创建一个简单的Mule流-它会定期轮询目录,当文件放在目录中时,它会将其发送到SFTP服务器。但是,当应用程序开始与服务器协商安全连接时,它将失败并显示以下错误:java.io.IOException:登录到username @ host时出错:Session.connect:java.security.InvalidAlgorithmParameterException:DH密钥大小必须是64的倍数,并且只能在512到8192(含)范围内。不支持特定的密钥大小2047堆栈跟踪引用了jsch库中的几个文件。先前问题中的解决方案建议使用其他版本的jsch或自己编辑jsch jar升级到Java 8。我的Mule服务器(版本3.9.0 EE)已经在Java 8上,我尝试了几种不同版本的jsch,并且编辑jars是不切实际的,因为此应用程序将部署到几种不同的环境中。通过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代码。
查看完整描述

1 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

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

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

并且在流运行时,正确协商了dh键,并且不会引发任何错误。


查看完整回答
反对 回复 2021-04-14
  • 1 回答
  • 0 关注
  • 277 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信