Windows批处理脚本通过带密钥的SFTP传输文件遇连接超时问题
FTPS传输超时问题排查
(注:你使用的ftp://协议结合-explicittls参数是FTPS协议,而非SFTP;若目标服务器为SFTP,需调整协议参数)
你使用Puttygen生成的带密码短语私钥,执行以下脚本传输文件时出现连接超时错误,脚本最后执行exit命令:
open ftp://%1%:%2%@%3%/ -explicittls -certificate="32:4b:5e:a7:05:b9:e4:2d:7d:44:cb:c1:0e:ee:0e:17"-privatekey=D:\SSIS_DEV\DBTeam\Transfer\Rural\Private.ppk put %4%
exit
可按以下方向排查解决:
- 检查网络与端口连通性:用
ping %3%测试服务器可达性,用telnet %3% 21验证FTPS控制端口是否开放;若使用被动模式,需确认服务器指定的被动端口范围已在本地防火墙/路由中放行。 - 修正命令语法错误:
-certificate与-privatekey参数间缺少空格,会导致参数解析失败,修正后命令:open ftp://%1%:%2%@%3%/ -explicittls -certificate="32:4b:5e:a7:05:b9:e4:2d:7d:44:cb:c1:0e:ee:0e:17" -privatekey=D:\SSIS_DEV\DBTeam\Transfer\Rural\Private.ppk - 私钥密码短语处理:若私钥设置了密码短语,需在
open命令中添加-passphrase="你的密码短语"参数,或提前通过PuTTY代理加载私钥(避免脚本中明文暴露密码)。 - 协议匹配调整:若目标服务器实际为SFTP(SSH文件传输),需改用
sftp://协议,命令示例:
同时验证22端口是否开放。open sftp://%1%@%3%/ -privatekey=D:\SSIS_DEV\DBTeam\Transfer\Rural\Private.ppk -passphrase="你的密码短语" - 延长超时时间:在
open命令中添加-timeout=30(单位秒),缓解网络延迟导致的超时。 - 生成日志定位问题:执行脚本时添加
/log="D:\指定路径\winscp.log"参数,通过日志查看具体超时环节(连接、认证或数据传输)的详细错误信息。
内容的提问来源于stack exchange,提问作者Tirtha Roy Chowdhury
相关产品推荐
相关产品推荐

