使用 PSFTP.exe 将文件上传到 sftp 服务器时执行进程任务时出错

Error in execute process task while uploading a file to sftp server using PSFTP.exe

我在 SSIS 中创建了一个执行进程任务来将文件上传到 sftp 服务器。我可以完全访问服务器文件夹,并且能够使用 filezilla 拖放文件。我正在使用 putty sftp 客户端 psftp.exe 进行上传。现在,当我将 psftp.exe 与用户、传递和批处理参数一起使用时,它在 windows cmd 中工作得非常好。但是当我在 SSIS 中执行相同的操作时,出现以下错误:

Error: 0xC0029151 at Execute Process Task, Execute Process Task: In Executing "C:\temp\psftp.exe" "user -pw pass -be -batch -b Upload.bat" at "C:\temp", The process exit code was "1" while the expected was "0".
Task failed: Execute Process Task

我的 windows cmd 参数是:

psftp.exe devsftp@secftp2.alliedpilots.org -b UploadUsersToSftp.bat

然后要求输入密码,输入密码后,文件上传成功。但是我无法通过 SSIS 执行相同的操作。以下是 SSIS 进程任务参数截图:

我在网上搜索,在here but nothing specific to psftp. Also found same question on Whosebug here找到了一些类似的问题,但是提到的解决方案是权限,我已经检查过了。

如有任何帮助,我们将不胜感激。

SSIS 很可能 运行 与您在 "Windows cmd" 中使用的本地帐户不同。

SFTP 访问需要确认主机密钥。您过去可能已经验证过本地帐户中的主机密钥,因此它缓存在 Windows 注册表中。

但是运行s SSIS 的帐户没有缓存主机密钥。所以一定是失败了。

您应该添加 -hostkey 切换到 psftp.exe 命令行,并带有预期主机密钥的指纹。


如果这没有帮助,请将 psftp.exe 包装到一个批处理文件并将其输出重定向到一个文件。

psftp.exe devsftp@secftp2.alliedpilots.org -b UploadUsersToSftp.bat > c:\temp\psftp.out 2>&1

和运行SSIS中的批处理文件,而不是直接psftp.exe

然后检查文件是否有错误。