使用PSCP带-pw选项仍遇Access Denied的自动化传输问题
解决PSCP使用-pw参数仍需手动输入密码的自动化传输问题
方法1:SSH密钥认证(最推荐,安全且稳定)
这是自动化文件传输的最优方案,彻底避免明文密码和交互输入:
- 生成密钥对:运行Putty工具包中的
puttygen.exe,点击"Generate"生成RSA/ED25519密钥对,可选择设置密钥保护密码(可选但建议),保存私钥为.ppk格式(比如D:\keys\my_ssh_key.ppk),复制公钥内容。 - 配置远程服务器:登录远程服务器,将公钥内容追加到用户目录下的
~/.ssh/authorized_keys文件中,确保该文件权限为600,.ssh目录权限为700(权限错误会导致密钥认证失败)。 - 执行PSCP传输:
pscp -i D:\keys\my_ssh_key.ppk D:\path\to\file.xlsx user@server123:/path/to/remote/directory
如果私钥设置了密码,可提前用pageant.exe加载私钥(双击.ppk文件即可),PSCP会自动读取已加载的密钥,无需手动输入密码。
方法2:修复-pw参数的传递问题
如果坚持使用密码认证,先排查PowerShell对密码的解析问题:
- 若密码包含特殊字符(如
$、&、空格),必须用单引号包裹密码,防止PowerShell解析特殊符号:pscp -pw 'myPass$123' D:\path\to\file.xlsx user@server123:/path/to/remote/directory - 也可以将命令写入
.bat批处理文件执行,绕过PowerShell的参数解析干扰。
方法3:输入重定向传递密码(仅临时应急,安全性低)
如果无法配置密钥,可通过PowerShell管道直接传递密码,但密码会明文暴露在脚本中,不推荐用于生产环境:
"somepassword" | pscp D:\path\to\file.xlsx user@server123:/path/to/remote/directory
注意:该方式仅在远程服务器允许密码交互认证时有效,且密码不能包含换行符。
内容的提问来源于stack exchange,提问作者undetected
相关产品推荐
相关产品推荐

