WinSCP命令行连接WebDAV提示Basic认证被拒如何正确配置脚本
问题根因
认证失败主要由两个常见原因导致:
- 用户名中包含的
@特殊字符未做URL转义,WinSCP解析URL时会把@作为用户名和主机地址的分隔符,导致用户名、主机地址被错误拆分 - 脚本默认使用Basic认证方式,但WebDAV服务器不支持Basic认证,直接拒绝了认证请求,图形界面会自动协商匹配服务端支持的认证方式,所以可以正常连接
修正方案
方案1:修正URL转义+显式指定认证类型
首先对URL中的特殊字符做转义:用户名里的@转义为%40,如果密码包含&、%、#、空格等特殊字符也需要做对应URL编码。
同时在open命令后添加-webdav=Auto参数开启认证方式自动协商,匹配服务端支持的认证规则。
修正后的脚本内容:
open davs://user%40company.com:password@querty.sandbox.company.com/in/my.servlet/webdav/Catalogs/company/ -webdav=Auto synchronize remote -mirror D:\winscptest\files\ /in/my.servlet/webdav/Catalogs/company/ close exit
方案2(更推荐):拆分参数写法,避免转义错误
如果不想处理URL转义,可以把用户名、密码、地址分开写,语法更清晰不容易出错:
open davs://querty.sandbox.company.com/in/my.servlet/webdav/Catalogs/company/ -username=user@company.com -password=password -webdav=Auto synchronize remote -mirror D:\winscptest\files\ /in/my.servlet/webdav/Catalogs/company/ close exit
运行验证
修改脚本后直接用原命令运行即可:
"C:\Program Files (x86)\WinSCP\winscp.com" /script=script.txt /log=winscp.log /ini=nul
如果仍然报错,可以查看生成的winscp.log日志,确认服务端返回的支持的认证类型,调整-webdav参数的对应值即可。
内容的提问来源于stack exchange,提问作者peppe microtec
相关产品推荐
相关产品推荐

