"Ключ хоста не был подтвержден!" при подключении с использованием WinSCP .NET сборки

Я пытаюсь установить соединение с SFTP-сервером с помощью следующего кода, получаю сообщение об ошибке "Ключ хоста не проверен!",

SessionOptions so = new SessionOptions { 
    Protocol = Protocol.Sftp, 
    HostName = "xx.xx.xx.xx", 
    UserName = "usera",
    Password = "user123",
    SshHostKeyFingerprint = "2048 78:1d:67:f9:89:f5:ea:8e:28:84:68:04:f6:50:e7:ea"
};

using (Session s = new Session())
{
    s.Open(so);
}

Но если я установлю соединение, используя следующий код, я могу подключиться.

System.Diagnostics.Process winscp = new System.Diagnostics.Process();
winscp.StartInfo.FileName = "winscp.com";
winscp.StartInfo.UseShellExecute = false;
winscp.StartInfo.CreateNoWindow = true;
winscp.StartInfo.RedirectStandardOutput = true;
winscp.StartInfo.RedirectStandardInput = true;
winscp.Start();

winscp.StandardInput.WriteLine("open sftp://usera:user123@xx.xx.xx.xx");
winscp.StandardInput.Close();

Мне так любопытно узнать, что я сделал неправильно в первом методе?

1 ответ

Решение

Неправильный формат отпечатка ключа вашего хоста. Вам не хватает типа ключа (ssh-rsa или же ssh-dss) по крайней мере.

См. FAQ по WinSCP. Где взять отпечаток ключа хоста SSH для авторизации сервера?


Ваш код, использующий сценарии, успешно выполняется, потому что у вас кешируется отпечаток пальца. Сборка.NET никогда не использует кеш отпечатков пальцев.

Последние версии WinSCP выдают более значимое сообщение, когда отпечаток не совпадает.

Другие вопросы по тегам