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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:53:55