Подтвердить что ты не робот

SSH.NET - не найдено подходящего метода аутентификации

Это мой код с использованием SSH.NET

using (var sftp = new SftpClient(host, username, password))
{                
    sftp.Connect();  
}

Он работает на SFTP, установленном на моем локальном компьютере, но когда я указываю его на реальном SFTP-сервере от клиента, я получаю Renci.SshNet.Common.SshAuthenticationException: для проверки подлинности не найдено подходящего метода аутентификации.

Я не могу найти документацию о том, какие методы проверки подлинности я должен использовать, а в файле Zilla простое имя пользователя и пароль делают трюк.

Кто-нибудь может посоветовать?

4b9b3361

Ответ 1

Итак, ответ на мою проблему заключается в том, что это не сервер sftp. Это был простой FTP-сервер, поэтому я просто использовал webrequest.

Проверьте, что сервер на самом деле является сервером sftp.

Ответ 2

Я нашел ответ (по крайней мере, для моей проблемы, которая, похоже, совпадает с запрошенной операцией):

Мне пришлось изменить аутентификацию на KeyboardInteractiveAuthenticationMethod

Итак, теперь это работает:

KeyboardInteractiveAuthenticationMethod keybAuth = new KeyboardInteractiveAuthenticationMethod(SFTP_USR);
keybAuth.AuthenticationPrompt += new EventHandler<AuthenticationPromptEventArgs>(HandleKeyEvent);

ConnectionInfo conInfo = new ConnectionInfo(SFTP_HST, SFTP_PRT, SFTP_USR, keybAuth);

using (SftpClient sftp = new SftpClient(conInfo))
{
    sftp.Connect();

    // Do SFTP Stuff, Upload, Download,...

    sftp.Disconnect();
}

HandleKeyEvent затем передает пароль:

private void HandleKeyEvent(object sender, AuthenticationPromptEventArgs e)
{ 
    foreach (AuthenticationPrompt prompt in e.Prompts)
    {
        if (prompt.Request.IndexOf("Password:", StringComparison.InvariantCultureIgnoreCase) != -1)
        {
            prompt.Response = SFTP_PWD;
        }
    }
}