通过Windows服务运行我的SFTP命令批处理文件时,我收到的消息是<。p>
服务器的主机密钥未缓存在注册表中。你
无法保证服务器是您的计算机 认为是。
服务器的rsa2密钥指纹是:
ssh-rsa 1024 cc:78:13:a3:68:a6:59:7e:b8:23:2d:13:3e:66:9b:b9
如果您信任此主机,请输入&#34; y&#34;将密钥添加到
PuTTY的缓存并进行连接。
如果你想只进行一次连接,没有
将密钥添加到缓存中,输入&#34; n&#34;。
如果您不信任此主机,请按Return键放弃 连接。
将密钥存储在缓存中? (Y / N)
连接被遗弃。
SSH密钥已缓存在以下路径中,
HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
但由于我的Windows服务在本地计算机上运行,我需要手动复制以下路径中的相同密钥,
HKEY_USERS\.DEFAULT\Software\SimonTatham\PuTTY\SshHostkeys
第一次启动服务时,有没有其他方法可以自动执行此操作?
或
是否有任何命令将缓存从一个注册表复制到另一个(即)来自&#34; HKEY_CURRENT_USER \ Software \ SimonTatham \ PuTTY \ SshHostKeys&#34;到&#34; HKEY_USERS.DEFAULT \ Software \&#34;
我使用了以下命令,
Copy-Item -Path 'HKCU:\Software\SimonTatham\' -Destination 'hku:\Software\' -Recurse
但收到错误,无效的文件路径
答案 0 :(得分:2)
理想情况下,主机密钥应该是脚本包的一部分(它是会话信息的一部分,还有主机名,用户名等)。
psftp
的最新版本允许使用-hostkey
开关指定预期的主机密钥:
psftp.exe user@example.com -hostkey aa:bb:cc:...
我之前的回答psftp.exe
没有-hostkey
开关:
在运行SFTP之前,必须将SshHostkeys
注册表项导出到文件并从脚本(批处理文件)中导入它。
或者使用另一个允许在脚本中指定主机密钥的可编写脚本的SFTP客户端。例如。使用WinSCP,您可以:
open sftp://martin:mypassword@example.com/ -hostkey="ssh-rsa 2048 xxxxxxxxxxx...="
请参阅https://winscp.net/eng/docs/scriptcommand_open
(我是WinSCP的作者)