Я пытаюсь подключиться к серверу WinSCP с помощью сборки WinSCP .NET. Проблема, с которой я столкнулся, заключается в том, что он бомбит проверку отпечатка ключа хоста. Я создал ключ 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";
Если я правильно читаю регулярное выражение, это не дает вам представления о том, что вам нужен размер отпечатка пальца после типа отпечатка пальца.
Надеюсь, это поможет кому-то другому. Спасибо всем за понимание и вклад.