我正在尝试使用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
属性分配时,我收到以下错误提示:
如果我理解正确,它正在检查15个2字符集,而我正在分配一个16字符集的值。我从服务器上获取了该值。 更新: 我遗漏了指纹类型(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})*/不匹配。
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";
如果我正确理解正则表达式,它并没有告诉你在指纹类型后你需要指纹大小的信息。
希望这对其他人有所帮助。感谢大家提供的见解和意见。