我正在按照以下示例https://winscp.net/eng/docs/scripting自动将文件从我的电脑传输到 SFTP 服务器。但是每次我尝试提供私钥密码时,验证都会失败。
当使用 WinSCP 图形用户界面时以及当我在命令行中明确输入密码时,我可以使用相同的密码,但是当自动化时则不能。
我的代码如下所示
open sftp://user:password%[email protected]
我已遵循https://winscp.net/eng/docs/session_url对特殊字符进行编码,因此 %21 表示感叹号。有趣的是,页面上的示例没有对感叹号进行编码,例如4pRte!ai%[email protected]
我也尝试过使用password!
,但也没有用。
答案1
问题是,它需要一个私钥的密码短语,但 WinSCP 不支持以编程方式提供私钥,如常见问题解答中所述https://winscp.net/eng/docs/faq_passphrase。
解决方法是使用 WinSCP 安装提供的 Pageant 代理,或使用以下独立可执行文件:https://winscp.net/eng/download.php。希望这能在未来帮助到其他人。
答案2
这不是“密码”,而是“密码短语”。
根据 WinSCP 常见问题解答我如何才能连接而不必每次都输入私钥密码?:
自动化私钥认证
您可以使用以下方式指定密码-passphrase
开关open
脚本中的命令
例子:
open -passphrase=... -privatekey=... sftp://[email protected]/