我一直想弄明白这一点。我希望有人能帮帮忙。我已经从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\*"
您尚未在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
命令)。
WinSCP GUI可以为您提供generate a correct script template。