在Windows服务中使用psftp验证服务器主机密钥

本文关键字:psftp 验证 服务器 主机密钥 Windows 服务 | 更新日期: 2023-09-27 18:26:29

我在通过Windows服务运行SFTP命令批处理文件时收到以下消息。

服务器的主机密钥未缓存在注册表中。您
不能保证服务器就是您的计算机
我想是的。
服务器的rsa2密钥指纹为:
ssh rsa 1024 cc:78:13:a3:68:a6:59:7e:b8:23:2d:1:3e:66:9b:b9
如果您信任此主机,请输入"y"将密钥添加到
PuTTY的缓存并继续连接
如果您只想继续连接一次,则不需要
将密钥添加到缓存中,输入"n"
如果您不信任此主机,请按Return放弃
连接
是否将密钥存储在缓存中?(y/n)
已放弃连接。

SSH密钥已缓存在以下路径中,

HKEY_CURRENT_USER'Software'SimonTatham'PuTTY'SshHostKeys

但由于我的Windows服务是在本地机器上运行的,我需要手动复制下面路径中的相同密钥,

HKEY_USERS'.DEFAULT'Software'SimonTatham'PuTTY'SshHostkeys

当服务第一次启动时,有没有其他方法可以自动做到这一点?

是否有任何命令将缓存从一个注册表复制到另一个注册表(即从"HKEY_CURRENT_USER''Software''SimonTatham''PuTTY''SshHostKeys"复制到"HKEY_USERS.DEFAULT''Software''"

我使用了以下命令,

Copy-Item -Path 'HKCU:'Software'SimonTatham'' -Destination 'hku:'Software'' -Recurse

但出现错误,不是有效的文件路径

在Windows服务中使用psftp验证服务器主机密钥

理想情况下,主机密钥应该是脚本包的一部分(它是会话信息的一部分,以及主机名、用户名等)

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的作者)