如何从私钥获取 SFTP 的密钥指纹?

How to get key fingerprint for SFTP from private key?

因为我正在处理一个使用 WinSCP .NET 程序集的 .NET C# 项目,用于 SFTP 无密码连接。到目前为止,我已经制作了一个 UI,我们必须在其中提供 SSH 密钥指纹、释义和 .ppk 文件的路径。

我的问题是,如果用户仅提供其 .ppk 文件路径,是否有任何方法可以通过代码自动获取 "SSH key fingerprint"?

.ppk 是您帐户的一对密钥,您使用 SessionOptions.SshPrivateKeyPath 指定。

SessionOptions.SshHostKeyFingerprint 的主机密钥用于服务器(= 主机)的密钥对。它不是您的密钥对中的 public 密钥。

这些密钥对没有任何共同点。你不能从另一个中提取一个。

详情见Understanding SSH key pairs

另见 Where do I get SSH host key fingerprint to authorize the server?


如果要允许用户手动验证主机密钥,请使用Session.ScanFingerprint method 检索指纹进行验证。验证后,将验证后的指纹分配给SessionOptions.SshHostKeyFingerprint

有关示例,请参阅 Implementing SSH host key cache (known hosts)