【问题标题】:WSO2 ESB: SFTP file transfer: Could not connect to SFTP serverWSO2 ESB:SFTP 文件传输:无法连接到 SFTP 服务器
【发布时间】:2019-02-04 09:23:23
【问题描述】:

我正在尝试使用 WSO2 Enterprise Integrator 6.3.0 将一些文件从本地服务器传输到 SFTP 服务器。我有用户名、SFTP 位置、SFTP 端口(990)、ppk 文件和密码短语。当我在代理服务中尝试以下配置时,我无法连接到 SFTP 服务器。它给出了 com.jcraft.jsch.JSchException: Auth fail 错误。使用 putty,连接工作正常。

<?xml version="1.0" encoding="UTF-8"?>
<proxy name="SFTPFileTransferProxy" startOnLoad="true"
  trace="disable" transports="vfs" xmlns="http://ws.apache.org/ns/synapse">
  <target>
    <inSequence>
      <property expression="$trp:FILE_NAME" name="FILE_NAME"
        scope="default" type="STRING"/>
      <log level="custom">
        <property expression="$ctx:FILE_NAME" name="FL2"/>
        <property name="sequence" value="FTPProxy"/>
      </log>
    </inSequence>
    <outSequence/>
    <faultSequence/>
  </target>
  <parameter name="transport.PollInterval">10000ms</parameter>
  <parameter name="transport.vfs.FileURI">file:///C:/files/out</parameter>
  <parameter name="transport.vfs.ContentType">text/plain</parameter>
  <parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter>
  <parameter name="transport.vfs.MoveAfterFailure">file:///C:/test/failure</parameter>
  <parameter name="transport.vfs.SFTPIdentities">file:///C:/sftp/keys/PrivateKey_Integration.ppk</parameter>
  <parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter>
  <parameter name="transport.vfs.FileNamePattern">.*\.csv</parameter>
  <parameter name="transport.vfs.MoveAfterProcess">vfs:sftp://username@sftp.XXXX.com:990/in/file/</parameter>
  <parameter name="transport.vfs.SFTPIdentityPassPhrase">KEY_PASSPHRASE</parameter>
</proxy>

我得到的错误是

[2019-02-04 12:48:31,823] [] ERROR - VFSTransportListener File object 'file:///C:/files/out/20181226FULL.csv'cloud not be moved, will remain in "locked" state
org.apache.axis2.AxisFault: Error resolving directory to move after processing : sftp://username@sftp.XXXX.com:990/in/file
        at org.apache.axis2.transport.base.AbstractTransportListener.handleException(AbstractTransportListener.java:343)
        at org.apache.synapse.transport.vfs.VFSTransportListener.moveOrDeleteAfterProcessing(VFSTransportListener.java:715)
        at org.apache.synapse.transport.vfs.VFSTransportListener.scanFileOrDirectory(VFSTransportListener.java:504)
        at org.apache.synapse.transport.vfs.VFSTransportListener.poll(VFSTransportListener.java:188)
        at org.apache.synapse.transport.vfs.VFSTransportListener.poll(VFSTransportListener.java:134)
        at org.apache.axis2.transport.base.AbstractPollingTransportListener$1$1.run(AbstractPollingTransportListener.java:67)
        at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.commons.vfs2.FileSystemException: Could not connect to SFTP server at "sftp://username@sftp.XXXX.com:990/".
        at org.apache.commons.vfs2.provider.sftp.SftpFileProvider.doCreateFileSystem(SftpFileProvider.java:86)
        at org.apache.commons.vfs2.provider.AbstractOriginatingFileProvider.getFileSystem(AbstractOriginatingFileProvider.java:149)
        at org.apache.commons.vfs2.provider.AbstractOriginatingFileProvider.findFile(AbstractOriginatingFileProvider.java:111)
        at org.apache.commons.vfs2.provider.AbstractOriginatingFileProvider.findFile(AbstractOriginatingFileProvider.java:81)
        at org.apache.commons.vfs2.impl.DefaultFileSystemManager.resolveFile(DefaultFileSystemManager.java:778)
        at org.apache.commons.vfs2.impl.DefaultFileSystemManager.resolveFile(DefaultFileSystemManager.java:658)
        at org.apache.synapse.transport.vfs.VFSTransportListener.moveOrDeleteAfterProcessing(VFSTransportListener.java:667)
        ... 8 more
Caused by: org.apache.commons.vfs2.FileSystemException: Could not connect to SFTP server at "sftp.XXXX.com".
        at org.apache.commons.vfs2.provider.sftp.SftpClientFactory.createConnection(SftpClientFactory.java:164)
        at org.apache.commons.vfs2.provider.sftp.SftpFileProvider.doCreateFileSystem(SftpFileProvider.java:79)
        ... 14 more
Caused by: com.jcraft.jsch.JSchException: Auth fail
        at com.jcraft.jsch.Session.connect(Session.java:519)
        at com.jcraft.jsch.Session.connect(Session.java:183)
        at org.apache.commons.vfs2.provider.sftp.SftpClientFactory.createConnection(SftpClientFactory.java:162)
        ... 15 more

如何将 SFTP 服务器与 SFTPIdentities 连接?

【问题讨论】:

  • PPK 文件特定于 putty。您是否尝试将其转换为常规 ssh 密钥?
  • 是的。我也试过了。但同样的错误。
  • 只是为了确保:您正在尝试使用入站 SFTP,对吗?另一件事:尝试使用 transport.vfs.SFTPUserDirIsRoot=true 参数来查看是否有任何变化。最后,请在消息中添加完整的堆栈跟踪,因为它有时可以帮助指出问题的根源。
  • 用代理文件详细信息和错误堆栈更新了问题。
  • 只是为了帮助隔离根本原因,您可以将 ActionAfterProcess 参数更改为“NONE”吗?

标签: wso2 sftp wso2esb


【解决方案1】:

在 Windows 上尝试如下密钥路径。它对我有用。

<parameter name="transport.vfs.SFTPIdentities">/sftp/keys/PrivateKey_Integration.ppk</parameter>

在 Ubuntu 上,我将密钥路径指定为

<parameter name="transport.vfs.SFTPIdentities">/home/sbhatti/.ssh/key.ppk</parameter>

但它不起作用,并给出与上述问题相同的异常。有人知道吗?我们如何调试和应用正确的路径?

【讨论】:

  • @PhilippeSevestre 我已将 ActionAfterProcess 参数应用于“NONE”。它没有给出任何错误并成功结束。这意味着什么?
  • 嗨@NGR,我正面临“由:org.apache.commons.vfs2.FileSystemException:无法连接到“服务器IP”处的SFTP服务器”,尝试使用VFS、FileInbound和FileConnector,你能得到任何解决方案吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-16
  • 1970-01-01
  • 2015-12-25
  • 2021-07-26
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多