我正在尝试使用 WinSCP .NET 程序集连接到 WinSCP 服务器。我遇到的问题是它会检查主机密钥指纹。我创建了一个 RSA 密钥。我的代码如下:
var server = new WinSCP.SessionOptions();
server.UserName = "ftp_user";
server.Password = "******";
server.HostName = "192.x.x.x";
server.Protocol = WinSCP.Protocol.Sftp;
server.SshHostKeyFingerprint =
"9f:39:52:d5:08:0c:1d:a8:02:c9:7e:44:49:7f:44:fb";
var session = new WinSCP.Session();
session.Open(server);
在SshHostKeyFingerprint
属性分配中,我收到以下错误:
SSH 主机密钥指纹“9f:39:52:d5:08:0c:1d:a8:02:c9:7e:44:49:7f:44:fb”不匹配模式 /(ssh-rsa |ssh-dss )?\d+ ([0-9a-f]{2}:){15}[0-9a-f]{2}(;(ssh-rsa |ssh-dss )?\d+ ([0-9a- f]{2}:){15}[0-9a-f]{2})*/
如果我正确阅读,它正在检查 15 2 个字符集,并且我正在分配一个 16 个集合值。我从服务器得到这个值。
更新:
我缺少的是指纹类型(ssh-dss
或ssh-rsa
)及其大小(1024
等2048
)。因此,答案如下:
server.SshHostKeyFingerprint =
"ssh-rsa 1024 9f:39:52:d5:08:0c:1d:a8:02:c9:7e:44:49:7f:44:fb";
如果我正确阅读正则表达式,它不会让您知道在指纹类型之后需要指纹大小。
我希望这对其他人有帮助。感谢大家的洞察力和投入。