我为我们的2008R2服务器上的计划任务创build了一个服务帐户。 该任务将运行一个PowerShell脚本,其中包括每次使用PuTTY的PSCP运行时从Linux服务器下载归档文件。
但是,它不起作用,因为服务帐户从未连接到该服务器,并且不知道其主机密钥。 阅读手册和search,事实certificate,这些密钥存储在registry中的HKEY_USERS\<SID>\Software\SimonTatham\PuTTY\SshHostKeys
。
但问题在于:由于本地login不允许,服务帐户没有本地configuration文件,因此在HKEY_USERS
中没有条目。
这怎么解决? 我怀疑这是一个非常好的主意,只需在HKEY_USERS
下创buildSID
键,但必须有一些解决方法? 我可以把这个在一些默认的用户密钥?
理想情况下,在PuTTY中直接支持命令行选项“预接受”主机密钥或完全closures主机密钥检查将是最简单的解决scheme。 不过, 看起来这个function不会很快出现在这里 。
然而,你已经有了一个运行的powershell脚本,应该能够写入它自己的HKEY_CURRENT_USERregistryconfiguration单元。 而且我假设你的linux服务器的主机密钥不会经常改变。 那么,为什么不直接让powershell脚本在开始进行pscp调用之前将相应的值写入registry?
Set-ItemProperty "hkcu:\Software\SimonTatham\PuTTY\SshHostKeys" "{name}" "{value}"
您可以从另一个用户会话中find已经接受密钥的{name}和{value}。 HKEY_USERS\<SID>
与匹配该SID的用户的HKEY_CURRENT_USER
的根相同。 所以只要您从两个帐户中引用HKEY_CURRENT_USER
,主机密钥的path应该是相同的。