在WinSCP SCP脚本中使用私钥

时间:2014-10-29 22:41:25

标签: batch-file scp ssh-keys winscp

我一直试图解决这个问题。我希望有人能帮帮忙。我已经从Unix服务器向SCP文件编写了一个批处理脚本,并将它们存储在Windows服务器中。我有一把钥匙。但是,服务器仍在向我询问密码"。这是我的下面的脚本,我希望有人可以看到我的选项出错了吗?关键的公共和私人已经确定。我能够使用密钥登录putty。但是,尝试使用该脚本仍然要求我输入密码。这就像服务器看不到指纹。

winscp.com /command "option batch abort" "option confirm off"
"open scp://user@host/ -hostkey=""ssh-rsa fingerprint"""
"get /var/log/CPbackup/backups/R77 backup file* D:\fwlogbackups\*"

1 个答案:

答案 0 :(得分:2)

您尚未在open命令中指定私钥。使用-privatekey= switch即可。

你可能对-hostkey=开关感到困惑。这用于验证服务器的公钥 请参阅Verifying the host key

如果您在-hostkey=中指定了帐户的公钥指纹,则需要将其更新为服务器的公钥指纹。
Where do I get SSH host key fingerprint for use with scripting or .NET assembly?

另见Understanding SSH key pairs


Ntb,您在get命令中的空格路径周围缺少引号 应该是这样的:

"get ""/var/log/CPbackup/backups/R77 backup file*"" D:\fwlogbackups\*"

完整的命令行应该是:

winscp.com /command ^
    "open scp://user@host/ -privatekey=""path\mykey.ppk"" -hostkey=""ssh-rsa fingerprint""" ^
    "get ""/var/log/CPbackup/backups/R77 backup file*"" D:\fwlogbackups\*" ^
    "exit"

(在最新版本的WinSCP中不再需要option命令。)