0

我在 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 进程任务参数截图:

在此处输入图像描述

我在网上搜索并在这里找到了一些类似的问题,但没有特定于 psftp。在 stackoverflow 上也发现了同样的问题,提到的解决方案是权限,我已经检查过了。

任何帮助,将不胜感激。

4

1 回答 1

2

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

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

但是运行 SSIS 的帐户没有缓存主机密钥。所以它必须失败。

您应该使用预期主机密钥的指纹将-hostkey开关添加到psftp.exe命令行。


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

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

并在 SSIS 中运行批处理文件,而不是psftp.exe直接运行。

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

于 2017-12-07T16:04:39.797 回答