问题:每当通过 Control-M(以 LocalServiceAccount 启动的服务)触发 Windows 批处理文件(包含要执行的命令PSFTP
)时,密钥都不会被缓存,并且每次都会提示存储密钥。
说明:我们正在使用psftp.exe
(Putty) 执行文件传输。当我使用我的帐户执行批处理文件时,我能够指纹并看到在注册表中更新的密钥(在 下HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys
)
努力 #1:在 TaskScheduler 中创建了一个任务,以与用户作为 LocalServiceAccount 运行相同的命令(通过批处理文件),并通过ECHO "Y" |
在 psftp 命令之前添加来执行指纹识别,这样它就不会提示确认。它有效,但仅适用于测试目的,因为我认为当我们转向生产时这不是一个好习惯。
努力#2:删除所有键并在注册表中手动添加键。它仍然不适用于 LocalServiceAccount,它只适用于我的帐户。LocalServiceAccount 没有进行指纹识别。
PsfTP 命令:
whoami
"C:\Program Files (x86)\PuTTY\psftp" userAccount@HostIPAddreess -i E:\keys\transfer.ppk
(添加 whoami 只是为了确认用户是否正确。)
不管批处理文件是通过 Control-M 服务(作为 LocalServiceAccount 运行)触发还是我们通过任务计划程序运行它都没有关系。在这两种情况下,密钥都没有被缓存。
类似的问题:感谢这篇文章,我得到了临时解决方案来添加 echo "Y"
:Putty won't cache the keys to access a server when run script in hudson
LocalServiceAccount 是服务器上管理员组的一部分,所以我不确定是否有导致问题的帐户的任何权限。
任何关于我应该寻找什么的建议表示赞赏。