我怎样才能通过腻子的psftp自动拉文件?

我有一个Windows Server 2003的盒子,它使用psftp连接到远程Linux机器,并每小时下载文件。

图片1.png

这台机器有两个主要的挑战:

第一

计划任务目前设置为在此框中以用户身份运行,我相信这需要将用户密码存储在任务计划程序中。 但是,当用户的密码更改时,任务无法运行。 我想不pipe这个任务总是运行。

  • 我相信第一个问题的解决scheme是将计划任务作为SYSTEM运行。 那是对的吗? 如果是这样,我该如何设置? 只需在“运行方式”框中键入SYSTEM ? 我是否需要为SYSTEM设置一个密码,因为我相信我没有使用密码尝试过,并且表示由于密码不正确而导致作业无法运行。 也许我做错了。

第二

Putty要求服务器的远程密钥存储在registry中以validation服务器的真实性。 但是,这似乎是存储在每个用户的基础上,所以如果我切换脚本作为不同的用户运行,似乎用户必须首次交互运行脚本,以便密钥存储在registry中。

  • 腻子网站上的说明提到,键应该被添加到以下registry位置:

     HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys 

但从“HKEY_CURRENT_USER”来看,我不认为这将是SYSTEM用户。 如果我将此任务设置为以SYSTEM身份运行,那么如何确保将适当的密钥存储在主机的registry中? 我不介意手动添加它(有一个perl脚本来转换known_hosts文件),但它应该去哪里?

ps: myscript.bat只是使用psftp.exe从远程服务器上拉取文件。 没什么特别的。 有没有标志可以跳过检查授权的主机,腻子的人提到,这将是一个坏主意无论如何。

我意识到这个问题已经被公认的答案,但我想我会扔在SYSTEM帐户的用户registryconfiguration单元的位置的答案。 实际上,在HKEY_USERS\.DEFAULT ,大多数人错误地认为这是新创build帐户的默认用户configuration单元。 有关关键的历史和背景的更多信息,请参阅Raymond Chen的MSDN博客:

.Default用户不是默认用户

我相信第一个问题的解决scheme是将计划任务作为SYSTEM运行。 那是对的吗?

一般来说,你只能运行一些东西,如果它真的需要这个绝对的权限。 一个更好的select可能是为这个任务设置一个服务帐户。 然后,您可能需要禁用该帐户的密码到期,或设置通知时间表来提醒您更新服务帐户密码和任务详细信息。

您当然可以暂时login到此服务帐户,以便您可以第一次接受SSH密钥。

在命令行上使用pscp.exe -batch -load PROFILE 。 使用该configuration文件的ssh-key-pair为您的连接设置configuration文件,然后使用该configuration文件。

您使用的用户帐户应该是本地的,但它不需要任何特殊权限(只需读取密钥并写入文件)。

对于所有命令开关,请尝试使用pscp -h

我不会使用这样的系统。 我只是创build一个名为puttyservice的新用户,将其设置为永不过期,然后closures。 显然,你会使用这个新的用户configuration文件。

我也考虑安装像Cygwin更强大的解决scheme,并使用OpenSSH版本的SSH,而不是腻子。 这是每个Linux系统上的标准版本,可能比腻子更健壮,更易于使用。 当然,你失去了GUI,但这不应该在脚本方面。

我知道这是一个旧的post,但我把这个答案在这里,以帮助其他用户有同样的问题。

腻子工具套件(plink,pscp,psftp等)有一个-hostkey选项。 这使您可以包含目标服务器的主机密钥,而不必经历将其他帐户(如SYSTEM)复制到其他帐户的麻烦。

pscp.exe /? 会告诉你正确的语法。

-hostkey xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

您可以通过在普通用户帐户下与目标服务器启动腻子会话来获取主机密钥。

从命令行看起来像这样:

 The server's rsa2 key fingerprint is: ssh-rsa 2048 7b:e5:6f:a7:f4:f9:81:62:5c:e3:1f:bf:8b:57:6c:5a 

用法:

 pscp.exe -hostkey 7b:e5:6f:a7:f4:f9:81:62:5c:e3:1f:bf:8b:57:6c:5a -batch -i your-private-key.ppk C:\source.file [email protected]:/var/www/html/ 

运行时以SYSTEM帐户运行的计划任务运行。

我希望这对某人有帮助。