【发布时间】:2014-01-14 08:22:37
【问题描述】:
我正在尝试使用 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";
如果我正确读取正则表达式,它不会让您知道在指纹类型之后需要指纹大小。
我希望这对其他人有所帮助。感谢大家的见解和意见。
【问题讨论】:
标签: c# .net winscp winscp-net rsa-key-fingerprint