【问题标题】:How To Extract SFTP SSH Key From Key Cache in FileZilla FTP Client如何从 FileZilla FTP 客户端的密钥缓存中提取 SFTP SSH 密钥
【发布时间】:2023-04-08 19:24:01
【问题描述】:

我已使用 FileZilla 通过 SFTP 连接到服务器,并接受将服务器的 SSH 密钥添加到 FileZilla 中的密钥缓存中。

如何将此缓存的密钥提取到密钥文件中,以便可以通过其他需要提供密钥文件的 SFTP 应用程序使用它?

我无法在 FileZilla 文档中找到与此相关的任何内容。

【问题讨论】:

  • 我想要的最终结果是使用 EnterpriseDT.com 的库通过 Java 执行 SFTP。他们的部分 API 需要在连接时提供密钥文件或密钥文本本身。我似乎无法找到有关如何从我尝试连接的 SFTP 服务器中提取关键信息以便保存它的信息。想法?

标签: ftp sftp filezilla


【解决方案1】:

如果您使用标准的 openssh 控制台客户端(cygwin 或来自 linux),主机密钥每行一个存储在 ~/.ssh/known_hosts 中。从那里,只需确定您的库需要该主机密钥的哪一部分。

Putty 还存储主机密钥,但它似乎以十六进制对它们进行编码。这些可以在 HKCUR\Software\SimonTatham\PuTTY\SshHostKeys 找到

【讨论】:

    【解决方案2】:

    托马斯是正确的。 FileZilla 搭载 PuTTY 的 PSFTP 程序,并将保存的以十六进制格式编码的密钥存储在他列出的注册表项(HKCUR\Software\SimonTatham\PuTTY\SshHostKeys)中。我需要 known_hosts 格式的密钥,所以我可以根据他的建议安装 windows version of openssh 并使用 ssh-keyscan 工具访问服务器并以正确的格式保存密钥信息:

    ssh-keyscan -t rsa <my_ftp_ip_address> > c:\known_hosts
    ssh-keyscan -t dsa <my_ftp_ip_address> > c:\known_hosts
    

    谢谢 Thomas 和 SO!

    【讨论】:

      【解决方案3】:

      感谢 Dougman 的提示!

      为了进一步帮助任何新人阅读您的答案。
      在运行 ssh-keyscan 之前,假设默认安装了 openssh,有一些命令需要运行(详细信息请阅读 quickstart/readme install)。
      这是我的命令,可让我获取主机密钥。

      C:\Program Files\OpenSSH\bin>mkgroup -l >> ..\etc\group
      C:\Program Files\OpenSSH\bin>mkpasswd -l >> ..\etc\passwd
      C:\Program Files\OpenSSH\bin>net start opensshd
      The OpenSSH Server service is starting.
      The OpenSSH Server service was started successfully.
      C:\Program Files\OpenSSH\bin>ssh-keyscan -t rsa vivo.sg.m.com > c:\known_hosts
      vivo.sg.m.com SSH-2.0-Sun_SSH_1.1
      

      【讨论】:

        【解决方案4】:

        如果您更喜欢使用 GUI,您可以使用 WinSCP FTP 客户端从日志窗口或首次连接弹出窗口中获取主机密钥:https://winscp.net/eng/docs/ssh_verifying_the_host_key

        【讨论】:

          【解决方案5】:

          除非我误解了你:你不需要。

          如果您使用另一个应用程序(即:PuTTY)连接到服务器并且之前没有看到服务器,那么您将被提示接受密钥。

          我明白您为什么要这样做,但每个应用程序都可以有自己的方式来存储密钥。

          【讨论】:

          • 因为他正在用 Java 编写自己的应用程序。
          • 或者,使用 WinScpNet 库运行 PowerShell 脚本。可能有多种原因。