2016-01-19 16 views
10

To jest mój kod używając SSH.NETSSH.NET - Nie nadaje się metoda uwierzytelniania znaleźć

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

Działa na SFTP mam zainstalowanego na komputerze lokalnym, ale kiedy skierować go na serwerze SFTP od A prawdziwy klient otrzymuję Renci.SshNet.Common.SshAuthenticationException: Nie znaleziono odpowiedniej metody uwierzytelniania w celu dokończenia uwierzytelniania.

Nie mogę znaleźć żadnej dokumentacji na temat metod uwierzytelniania, których powinienem używać, a na File Zilla wystarczy prosta nazwa użytkownika i hasło.

Czy ktoś może doradzić?

+0

Ena zaloguj się do FileZilla i pokaż nam dziennik (prawdziwy plik dziennika, a nie dziennik komunikatów z GUI). + To samo dla SSH.NET (rejestrowanie ANET dla źródła "SshNet.Logging") –

+0

samo tutaj! FileZilla działa dobrze, ale SSH.NET zgłasza ten wyjątek. – CeOnSql

+0

@CeOnSql, więc pokaż nam dziennik FileZilla, jak już zażądano. –

Odpowiedz

1

OK, więc odpowiedź na mój problem polega na tym, że nie był to serwer sftp. Był to prosty serwer ftp, więc po prostu użyłem webquestu.

Sprawdź, czy serwer jest rzeczywiście serwerem sftp.

+1

To jest dokładnie to, czego się spodziewałem i co moglibyśmy łatwo określić z dziennika FileZilla. –

+0

Gdybyś zasugerował, że tak czy inaczej, nie widząc logu, rozwiązałbyś mój problem :) – Shumii

+0

Mój serwer jest tylko SFTP, który sprawdziłem i potwierdziłem, ale wciąż mam ten sam problem. – Chirag

14

Znalazłem odpowiedź (przynajmniej dla mojego problemu, który wydaje się być taka sama jak op wymagane):

musiałem zmienić uwierzytelniania do KeyboardInteractiveAuthenticationMethod

Tak to działa teraz:

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 przechodzi hasło:

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; 
     } 
    } 
} 
Powiązane problemy