"Host key does not match configured key" 使用 WinSCP .NET 程序集连接到 SFTP 服务器时

"Host key does not match configured key" when connecting to SFTP server with WinSCP .NET assembly

我在尝试通过 C# 实现 SFTP 连接时遇到了一些问题。目前我可以使用 WinSCP 连接我的主机、端口、登录名、密码和密钥文件(ppk 文件)。

我的实现就是这样使用 WinSCP .NET:

SessionOptions sessionOptions = new SessionOptions
{
    Protocol              = Protocol.Sftp,
    HostName              = "",
    UserName              = "",
    SshHostKeyFingerprint = "",
    SshPrivateKeyPath     = "",
    PrivateKeyPassphrase  = ""
};

using (Session session = new Session ())
{
    session.Open (sessionOptions);
}

session.Open我总是收到异常。当我不填写 SshHostKeyFingerprint 参数时,我收到以下异常:

SessionOptions.Protocol is Protocol.Sftp or Protocol.Scp, but SessionOptions.SshHostKeyFingerprint is not set.

然后我用 PuTTYgen 打开了我的 ppk 文件。之后我复制了 "Key fingerprint" 并放入我的代码中。现在我收到以下异常:

Host key does not match configured key

这是否意味着我的服务器中必须有此密钥?如果是这样,我应该把这个钥匙放在哪里?在这种情况下,为什么我可以通过 WinSCP 连接而不通过此指纹?

谢谢!

SshHostKeyFingerprint 必须设置为服务器 public 密钥(又名主机密钥)的指纹,而不是在您的身份验证密钥对(您的本地 ppk 文件)的 public 密钥中). 请参阅 WinSCP 站点上的 Understanding SSH key pairs 文章。

WinSCP GUI 可能会工作,因为它有一个 SSH 主机密钥的缓存副本,从您第一次在此特定服务器上使用 WinSCP 时起。

WinSCP 站点上似乎有一些关于 how you might go about getting SshHostKeyFingerprint within .NET. There is even a flag to use to skip host key verification (not secure: you could be connecting to a different server or someone could possibly MITM 连接的信息。