在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
但出现错误,不是有效的文件路径
理想情况下,主机密钥应该是脚本包的一部分(它是会话信息的一部分,以及主机名、用户名等)
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的作者)