WinSCP脚本执行报错:主机密钥指纹不匹配,GUI连接正常求助
WinSCP批处理脚本主机密钥不匹配问题解决
问题原因
WinSCP GUI能正常连接,但生成的脚本在批处理中报错Host key does not match configured key fingerprint 'ssh-ed25519',通常是以下原因:
- GUI与批处理使用的主机密钥存储不一致,或生成脚本时抓取的密钥指纹类型/值和实际连接时服务器返回的不匹配;
- 服务器同时支持多种SSH密钥类型(如ED25519、RSA),GUI连接时自动适配了某一种,但脚本中指定的密钥类型与服务器当前返回的不匹配。
解决步骤
1. 验证脚本中主机密钥指纹的正确性
- 打开WinSCP GUI,重新连接目标服务器,点击会话窗口左上角的服务器名称,查看当前实际使用的主机密钥指纹(注意确认密钥类型是
ssh-ed25519); - 对比批处理脚本中
open命令的-hostkey参数值,确保密钥类型前缀、指纹字符串(包括大小写、冒号分隔格式)完全一致。
2. 临时跳过密钥校验(仅用于排查,不推荐生产环境)
如果只是测试排查,可以在open命令中用通配符接受所有主机密钥,快速验证是否是密钥匹配问题:
winscp.com /command "open sftp://user:password@host:port -hostkey="*"" "put localfile remotepath" "exit"
⚠️ 此方法会绕过主机密钥校验,存在安全风险,仅用于临时排查。
3. 同步GUI与批处理的密钥缓存
WinSCP GUI的主机密钥默认存储在当前用户注册表(HKEY_CURRENT_USER\Software\Martin Prikryl\WinSCP 2\SshHostKeys)或配置文件中,批处理默认读取该位置,但如果批处理以其他用户身份运行(如系统账户),则无法访问当前用户的缓存:
- 从GUI中导出正确的主机密钥指纹,手动替换脚本中
-hostkey参数的对应值; - 若批处理用其他用户运行,可将GUI的配置文件复制到该用户的WinSCP配置目录下。
4. 检查服务器端SSH密钥配置
登录服务器,确认SSH服务配置中ssh-ed25519密钥是否正常启用,或是否存在多密钥类型共存导致服务器返回的密钥与脚本指定的不匹配情况。
内容的提问来源于stack exchange,提问作者Keith Clark
相关产品推荐
相关产品推荐

