我已在 2008R2 服务器上为计划任务创建了一个服务帐户。该任务运行一个 PowerShell 脚本,该脚本每次使用 PuTTY 的 PSCP 运行时都会从 Linux 服务器下载存档等。
但是,它不起作用,因为服务帐户以前从未连接到该服务器,并且不知道其主机密钥。阅读手册并进行搜索,发现这些密钥存储在注册表中的 下HKEY_USERS\<SID>\Software\SimonTatham\PuTTY\SshHostKeys
。
但问题是:由于不允许本地登录,服务帐户没有本地配置文件,因此它在 中没有条目HKEY_USERS
。
如何修复?我怀疑SID
在 下创建密钥不是一个好主意HKEY_USERS
,但一定有一些解决方法?我可以把它放在某个默认用户密钥中吗?
答案1
理想情况下,最简单的解决方案是直接在 PuTTY 中支持命令行选项以“预先接受”主机密钥或完全关闭主机密钥检查。然而,看起来这个功能近期不会出现。
但是,您已经运行了一个 powershell 脚本,该脚本应该能够写入其自己的 HKEY_CURRENT_USER 注册表配置单元。而且我假设您的 linux 服务器的主机密钥不会经常更改。那么为什么不让 powershell 脚本在开始进行 pscp 调用之前将适当的值写入注册表呢?
Set-ItemProperty "hkcu:\Software\SimonTatham\PuTTY\SshHostKeys" "{name}" "{value}"
您从已接受密钥的另一个用户的会话中找到 {name} 和 {value}。HKEY_USERS\<SID>
与匹配该 SID 的用户的根相同 HKEY_CURRENT_USER
。因此,只要您HKEY_CURRENT_USER
从两个帐户引用,主机密钥的路径就应该相同。