在WinSCP SCP脚本中使用私钥

问题描述 投票:2回答:1

我一直想弄明白这一点。我希望有人能帮帮忙。我已经从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\*"
batch-file scp ssh-keys winscp
1个回答
3
投票

您尚未在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

© www.soinside.com 2019 - 2024. All rights reserved.