【问题标题】:Verify server host key with psftp in Windows Service在 Windows 服务中使用 psftp 验证服务器主机密钥
【发布时间】:2014-10-15 05:25:23
【问题描述】:

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

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

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

但出现错误,文件路径无效

【问题讨论】:

    标签: c# windows-services sftp putty


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-27
      • 2015-06-13
      • 2017-09-25
      • 2017-06-15
      • 1970-01-01
      • 2014-12-27
      • 2011-06-23
      • 1970-01-01
      相关资源
      最近更新 更多