You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

WinSCP执行open命令报“参数过多”及主机密钥格式疑问

WinSCP "Too many parameters for command 'open'" 错误排查与解决

嘿,我来帮你搞定这个WinSCP脚本的问题!你遇到的Too many parameters for command 'open'错误,核心原因其实很简单——你用了中文全角的破折号()来写参数前缀,但WinSCP只认英文半角的连字符(-)。你加的—hostkey—rawsettings里的破折号都是中文的,这直接导致WinSCP无法正确解析命令,误以为你传了一堆无效参数。

另外你关心的hostkey格式问题,其实不用纠结太多,WinSCP两种格式都支持,我后面给你详细说明。

修正后的完整脚本

把所有中文破折号换成英文连字符,同时确保参数格式正确,修正后的脚本如下:

option echo off
option batch on
option confirm off
open sftp://XXX@XXX.com/ -hostkey="ssh-rsa 2048 XX:XX:XX:XX:XX:XX:XX" -rawsettings ProxyMethod=3 ProxyHost=proxy.uk.XXX.com
cd /XX/XX/XX/IN/LOAD
lcd \\XX.local\EMEA\XX\XX\Import_Location
put *.csv -nopreservetime=on -nopermissions=on
exit

Hostkey格式说明

  1. MD5格式:你现在用的ssh-rsa 2048 XX:XX:XX:XX:XX:XX:XX是标准的MD5指纹格式,WinSCP完全支持,不需要强制换成SHA-256。之前的错误和这个格式无关,主要是破折号的问题。
  2. SHA-256格式:如果确实想换成SHA-256,格式是不带冒号的Base64字符串,比如ssh-rsa 2048 AAAAB3NzaC1yc2EAAAADAQABAAABAQ...=。你可以打开WinSCP图形界面,手动连接服务器后,在会话属性里查看SHA-256指纹,直接复制过来用就行。

额外小技巧

如果换了破折号还是有问题,可以试试这些步骤排查:

  • 先用WinSCP图形界面手动连接目标SFTP,确认主机密钥的指纹和你脚本里写的完全一致;
  • 检查-rawsettings里的代理参数:ProxyMethod=3对应HTTP代理,确保ProxyHost的地址没有拼写错误;
  • 可以先简化open命令,只保留hostkey参数测试,没问题再加上代理参数,逐步排查。

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

火山引擎 最新活动