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

时间:2016-04-11 21:26:56

标签: 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";                    
}

1 个答案:

答案 0 :(得分:3)

Session.ScanFingerprint method仅适用于WinSCP 5.9。

请参阅https://winscp.net/tracker/1394

有关缓存指纹的具体问题,请参阅Implementing SSH host key cache (known hosts)示例。