com.jcraft.jsch.JSchException:算法协商失败+ mulesoft

时间:2017-03-30 05:53:52

标签: mule mule-studio

我正在执行以下用于FTP到文件传输的mulesoft代码。 从这里获得源代码: read file from SFTP and dump to local folder using mulesoft

<mule xmlns="http://www.mulesoft.org/schema/mule/core"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:sftp="http://www.mulesoft.org/schema/mule/sftp"
  xmlns:file="http://www.mulesoft.org/schema/mule/file"
  xmlns:spring="http://www.springframework.org/schema/beans"
  xsi:schemaLocation="
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
      http://www.mulesoft.org/schema/mule/sftp http://www.mulesoft.org/schema/mule/sftp/current/mule-sftp.xsd
      http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
      http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd">

<!-- This placeholder bean lets you import the properties from the sftp.properties file. -->
<spring:bean id="property-placeholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <spring:property name="location" value="classpath:sftp.properties"/>
</spring:bean>

<flow name="sftp2file">
    <sftp:inbound-endpoint host="${sftp.host}" port="${sftp.port}" path="/home/test/sftp-files" user="${sftp.user}" password="${sftp.password}"> 
                <file:filename-wildcard-filter pattern="*.txt,*.xml"/> 
            </sftp:inbound-endpoint>
    <file:outbound-endpoint path="/tmp/incoming" outputPattern="#[message.inboundProperties.originalFilename]"/> 
</flow>

但我收到以下错误:

    INFO  2017-03-29 18:43:20,877 [main] org.mule.transport.sftp.SftpConnector: Registering listener: sftp2file on endpointUri: sftp://{user}:****@{host}:22/incoming/test
INFO  2017-03-29 18:43:20,940 [main] org.mule.lifecycle.AbstractLifecycleManager: Initialising: 'null'. Object is: SftpMessageReceiver
INFO  2017-03-29 18:43:20,942 [main] org.mule.transport.sftp.SftpMessageReceiver: Connecting clusterizable message receiver
ERROR 2017-03-29 18:43:21,965 [main] org.mule.transport.sftp.SftpClient: Error during login to {user}@{host}
com.jcraft.jsch.JSchException: Algorithm negotiation fail
    at com.jcraft.jsch.Session.receive_kexinit(Session.java:583) ~[jsch-0.1.51.jar:?]
    at com.jcraft.jsch.Session.connect(Session.java:320) ~[jsch-0.1.51.jar:?]
    at com.jcraft.jsch.Session.connect(Session.java:183) ~[jsch-0.1.51.jar:?]
    at org.mule.transport.sftp.SftpClient.login(SftpClient.java:147) ~[mule-transport-sftp-3.8.3.jar:3.8.3]
    at org.mule.transport.sftp.SftpConnectionFactory.createClient(SftpConnectionFactory.java:116) ~[mule-transport-sftp-3.8.3.jar:3.8.3]
    at org.mule.transport.sftp.SftpConnector.createSftpClient(SftpConnector.java:195) ~[mule-transport-sftp-3.8.3.jar:3.8.3]
    at org.mule.transport.sftp.SftpConnector.createSftpClient(SftpConnector.java:178) ~[mule-transport-sftp-3.8.3.jar:3.8.3]
    at org.mule.transport.sftp.SftpReceiverRequesterUtil.getAvailableFiles(SftpReceiverRequesterUtil.java:72) ~[mule-transport-sftp-3.8.3.jar:3.8.3]
    at org.mule.transport.sftp.SftpMessageReceiver$2.doWork(SftpMessageReceiver.java:291) ~[mule-transport-sftp-3.8.3.jar:3.8.3]
    at org.mule.retry.policies.AbstractPolicyTemplate.execute(AbstractPolicyTemplate.java:63) ~[mule-core-3.8.3.jar:3.8.3]
    at org.mule.transport.sftp.SftpMessageReceiver.doConnect(SftpMessageReceiver.java:280) ~[mule-transport-sftp-3.8.3.jar:3.8.3]
    at org.mule.transport.AbstractMessageReceiver.connectHandler(AbstractMessageReceiver.java:448) ~[mule-core-3.8.3.jar:3.8.3]
    at org.mule.transport.AbstractTransportMessageHandler.connect(AbstractTransportMessageHandler.java:217) ~[mule-core-3.8.3.jar:3.8.3]
    at org.mule.transport.AbstractConnector.registerListener(AbstractConnector.java:1299) ~[mule-core-3.8.3.jar:3.8.3]
    at org.mule.endpoint.DefaultInboundEndpoint.start(DefaultInboundEndpoint.java:105) ~[mule-core-3.8.3.jar:3.8.3]
    at org.mule.api.lifecycle.LifecycleUtils.startIfNeeded(LifecycleUtils.java:92) ~[mule-core-3.8.3.jar:3.8.3]
    at org.mule.DefaultMuleContext.startMessageSource(DefaultMuleContext.java:381) ~[mule-core-3.8.3.jar:3.8.3]
    at org.mule.DefaultMuleContext.startPipelineMessageSources(DefaultMuleContext.java:372) ~[mule-core-3.8.3.jar:3.8.3]
    at org.mule.DefaultMuleContext.startMessageSources(DefaultMuleContext.java:335) ~[mule-core-3.8.3.jar:3.8.3]
    at org.mule.DefaultMuleContext.start(DefaultMuleContext.java:320) ~[mule-core-3.8.3.jar:3.8.3]
    at org.mule.module.launcher.application.DefaultMuleApplication.start(DefaultMuleApplication.java:139) ~[mule-module-launcher-3.8.3.jar:3.8.3]
    at org.mule.module.launcher.artifact.ArtifactWrapper$4.execute(ArtifactWrapper.java:105) ~[mule-module-launcher-3.8.3.jar:3.8.3]
    at org.mule.module.launcher.artifact.ArtifactWrapper.executeWithinArtifactClassLoader(ArtifactWrapper.java:136) ~[mule-module-launcher-3.8.3.jar:3.8.3]
    at org.mule.module.launcher.artifact.ArtifactWrapper.start(ArtifactWrapper.java:100) ~[mule-module-launcher-3.8.3.jar:3.8.3]
    at org.mule.module.launcher.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:26) ~[mule-module-launcher-3.8.3.jar:3.8.3]
    at org.mule.module.launcher.DefaultArchiveDeployer.deployArtifact(DefaultArchiveDeployer.java:309) ~[mule-module-launcher-3.8.3.jar:3.8.3]
    at org.mule.module.launcher.DefaultArchiveDeployer.deployPackagedArtifact(DefaultArchiveDeployer.java:164) ~[mule-module-launcher-3.8.3.jar:3.8.3]
    at org.mule.module.launcher.DefaultArchiveDeployer.deployPackagedArtifact(DefaultArchiveDeployer.java:253) ~[mule-module-launcher-3.8.3.jar:3.8.3]
    at org.mule.module.launcher.DefaultArchiveDeployer.deployPackagedArtifact(DefaultArchiveDeployer.java:75) ~[mule-module-launcher-3.8.3.jar:3.8.3]
    at org.mule.module.launcher.DeploymentDirectoryWatcher.deployPackedApps(DeploymentDirectoryWatcher.java:278) ~[mule-module-launcher-3.8.3.jar:3.8.3]
    at org.mule.module.launcher.DeploymentDirectoryWatcher.start(DeploymentDirectoryWatcher.java:150) ~[mule-module-launcher-3.8.3.jar:3.8.3]
    at org.mule.module.launcher.MuleDeploymentService.start(MuleDeploymentService.java:134) ~[mule-module-launcher-3.8.3.jar:3.8.3]
    at org.mule.module.launcher.MuleContainer.start(MuleContainer.java:172) ~[mule-module-launcher-3.8.3.jar:3.8.3]
    at org.mule.tooling.server.application.ApplicationDeployer.main(ApplicationDeployer.java:15) ~[tooling-support-3.8.3.jar:?]
ERROR 2017-03-29 18:43:21,969 [main] org.mule.retry.notifiers.ConnectNotifier: Failed to connect/reconnect: Trying to reconnect to SFTP server sftp://{user}:****@{host}:22/incoming/test. Root Exception was: Error during login to {user}@{host}: Algorithm negotiation fail. Type: class java.io.IOException
ERROR 2017-03-29 18:43:21,971 [main] org.mule.module.launcher.application.DefaultMuleApplication: Failed to start inbound endpoint "endpoint.sftp.{host}.22.incoming.test"
INFO  2017-03-29 18:43:21,978 [main] org.mule.module.launcher.application.DefaultMuleApplication:

有没有办法配置处理SSH问题的入站SFTP?

3 个答案:

答案 0 :(得分:2)

我使用的mulesoft服务器是“3.8.3 EE”。 这有旧版本的JSCH jar(jsch-0.1.51.jar)。

用最新的jar替换jar(jsch-0.1.54.jar) 要么 添加一个pom依赖项:

<dependency>
        <groupId>com.jcraft</groupId>
        <artifactId>jsch</artifactId>
        <version>0.1.54</version>
</dependency>

答案 1 :(得分:0)

您是否已阅读this answer来解决其他问题?

SFTP组件使用jsch。 jsch的文档声明如下:

  

JSch是纯Java的,但它依赖于JavaTM Cryptography Extension   (JCE)

here是关于如何安装JCE的简短说明。

答案 2 :(得分:0)

了解配置到SFTP连接器所连接的主机的SFTP,以及应放置文件的目录的访问权限。 https://winscp.net/eng/docs/guide_windows_openssh_server