我已使用 FileZilla 通过 SFTP 连接到服务器,并接受将服务器的 SSH 密钥添加到 FileZilla 中的密钥缓存中。
如何将此缓存的密钥提取到密钥文件中,以便可以通过其他需要密钥文件的 SFTP 应用程序使用它?
我无法在 FileZilla 文档中找到与此相关的任何内容。
如果您使用标准的 openssh 控制台客户端(cygwin 或来自 linux),主机密钥每行一个存储在 ~/.ssh/known_hosts 中。从那里,很容易确定您的库需要该主机密钥的哪位。
Putty 还存储主机密钥,但它似乎以十六进制对它们进行编码。这些可以在 HKCUR\Software\SimonTatham\PuTTY\SshHostKeys 找到
托马斯是对的。FileZilla 搭载 PuTTY 的 PSFTP 程序,并将保存的以十六进制格式编码的密钥存储在他列出的注册表项 (HKCUR\Software\SimonTatham\PuTTY\SshHostKeys) 中。我需要 known_hosts 格式的密钥,因此我能够按照他的建议安装windows 版本的 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
谢谢托马斯和SO!
感谢道格曼的提示!
为了进一步帮助任何新人阅读您的答案。
在运行 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
如果您更愿意使用 GUI,您可以使用 WinSCP FTP 客户端从日志窗口或首次连接弹出窗口中获取主机密钥:https ://winscp.net/eng/docs/ssh_verifying_the_host_key
除非我误解了你:你不需要。
如果您使用另一个应用程序(即:PuTTY)连接到服务器并且它之前没有看到服务器,那么您将被提示接受密钥。
我明白您为什么要这样做,但是每个应用程序都可以有自己的方式来存储密钥。