You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSIS 2016通过WinSCP执行SFTP任务报错及无主机密钥连接问题

解决SSIS 2016 + WinSCP SFTP的“Process exit code was 0 while expecting 1”错误

我来帮你搞定这个问题,咱们先理清楚根源,再一步步解决:

问题本质

你遇到的两个现象——WinSCP.com弹出主机密钥确认提示,以及SSIS报错“Process exit code was 0 while expecting 1”,其实是同一个问题导致的:

  • WinSCP在脚本模式下不支持交互式的主机密钥确认弹窗,当脚本里没明确处理密钥验证时,WinSCP会直接终止连接,返回的退出码是0(但你的SSIS任务预期成功退出码是1),所以触发了错误提示。
  • 那个弹窗里的提示已经给了关键线索:“In scripting, you should use a -hostkey switch”,也就是脚本里必须用-hostkey参数来指定主机密钥。

具体解决方案

方法1:指定主机密钥(推荐,安全合规)

这是生产环境的标准做法,步骤如下:

  1. 获取主机密钥指纹:
    • 打开WinSCP图形界面,手动连接一次目标SFTP服务器,在弹出的“主机密钥确认”窗口中,复制完整的密钥指纹(格式类似 ssh-rsa 2048 AA:BB:CC:...)。
    • 或者在WinSCP.com里执行open sftp://user:password@server:22,在弹出的提示文本里也能找到密钥指纹。
  2. 修改WinSCP脚本:
    在open命令后添加-hostkey参数,把你复制的指纹填进去:
    option batch abort
    option confirm off
    open sftp://user:password@server:22 -hostkey="ssh-rsa 2048 AA:BB:CC:DD:EE:FF:GG:HH:II:JJ:KK:LL:MM:NN:OO:PP"
    close
    exit
    

方法2:临时跳过密钥验证(仅测试环境用)

如果是测试环境,想快速验证连接,可以用通配符*跳过所有主机密钥验证,但生产环境绝对禁止这么做(会暴露中间人攻击风险):

option batch abort
option confirm off
open sftp://user:password@server:22 -hostkey="*"
close
exit

调整SSIS任务的退出码设置

最后别忘了修正SSIS里的任务配置:
打开你的Execute Process Task,找到SuccessValue属性,把它从1改成0——因为WinSCP执行成功时的退出码是0,SSIS任务需要匹配这个值才能判定任务成功。

这样调整后,WinSCP脚本不会再弹出确认提示,SSIS任务也能正确识别连接成功的状态了。

内容的提问来源于stack exchange,提问作者Al Jam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:33:36