如何使用 WinSCP 和 C# 从服务器获取 SSH 指纹

Jav*_*las 2 c# ssh sftp winscp winscp-net

我想在用户第一次访问服务器时获取指纹,然后保存该指纹(这不会是问题,我可以做到这一点)。我的问题是,应该有一种方法可以调用ScanFingerprint(),但当我搜索它时,该方法没有显示。

https://winscp.net/eng/docs/library_session_scanfingerprint#parameters

这就是我发现的,但该方法没有出现,知道如何做到这一点吗?

老实说,我还没有为此编写任何代码,因为我正在尝试找出该方法在哪里。但我有这个,我打算用它来设置SshHostKeyFingerprint属性

TransferOptions = new TransferOptions();
SessionOptions = new SessionOptions();
MySession = new Session();

SessionOptions.HostName = InterfaceConnection.Host;
SessionOptions.UserName = InterfaceConnection.UserID;
SessionOptions.Password = InterfaceConnection.Password;
SessionOptions.PortNumber = InterfaceConnection.Port;

if (string.Compare(protocol.ProtocolUsed, "FTP", true) == 0)                
    SessionOptions.Protocol = WinSCP.Protocol.Ftp;
else if (string.Compare(protocol.ProtocolUsed, "SFTP", true) == 0)
{
    SessionOptions.Protocol = WinSCP.Protocol.Sftp;                    
    SessionOptions.SshHostKeyFingerprint = protocol.FingerPrint;
    SessionOptions.SshPrivateKeyPath = "C:\\TestFiles\\SshKeys\\MyLocalSSHKey";
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ryl 6

Session.ScanFingerprint方法仅自 WinSCP 5.9 起可用。

参见https://winscp.net/tracker/1394

对于缓存指纹的具体问题,请参阅实现 SSH 主机密钥缓存(已知主机)示例。