我一直试图解决这个问题。我希望有人能帮帮忙。我已经从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\*"
答案 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
命令。)