"Ключ хоста не был подтвержден!" при подключении с использованием 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 выдают более значимое сообщение, когда отпечаток не совпадает.