WinSCP命令行自动接受任意证书失败问题求助
解决WinSCP在SSIS调用中FTPS证书确认弹窗问题
我之前碰到过一模一样的情况,你的问题核心在于证书链不完整(日志里明确写了Unable to get local issuer certificate),再加上可能调用的是WinSCP的GUI版本而非纯命令行版,才导致-certificate=*没起到预期作用。下面是几个靠谱的解决方案:
1. 切换调用WinSCP命令行版本(winscp.com)
如果SSIS里调用的是winscp.exe(带界面的GUI版),哪怕脚本参数写得再对,它还是可能弹出交互窗口。你必须换成winscp.com——这是纯命令行的执行版本,完全支持无交互运行。
修改SSIS里的执行命令,比如:
winscp.com /script=C:\path\to\your\transfer_script.txt
2. 用具体证书指纹替代通配符*
通配符-certificate=*在证书链不完整的场景下经常失效,不如直接指定日志里给出的证书SHA1指纹更稳妥:
把你的open命令里的-certificate=*替换成:
-certificate="SHA1:##################"
把##################换成日志里Fingerprint (SHA1)后面的实际字符串,这样WinSCP会直接信任这个特定证书,不会再弹出确认窗口。
3. 导入缺失的中间CA证书到本地存储
日志里的错误本质是本地机器没信任该证书的颁发机构(中间CA)。你可以手动导出服务器的完整证书链,再导入到Windows证书存储里:
- 先用WinSCP GUI连接一次服务器,在证书提示窗口点击「View Certificate」,导出包含中间CA的完整证书链
- 打开
certmgr.msc,把导出的证书导入到「中级证书颁发机构」或「受信任根证书颁发机构」 - 之后再用命令行调用WinSCP时,就不会再触发证书确认提示了
4. 升级WinSCP到最新稳定版
旧版本的WinSCP对FTPS证书链的处理逻辑有bug,升级到最新稳定版可以解决不少兼容性问题,尤其是-certificate参数的生效逻辑。
另外要注意:hostkey=*是给SFTP用的主机密钥信任参数,和FTPS的证书完全是两回事,所以你之前同时用两个参数报错是正常的——FTPS场景下只需要-certificate相关参数。
内容的提问来源于stack exchange,提问作者chazbot7
相关产品推荐
相关产品推荐

