【发布时间】: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”吗?