web-dev-qa-db-fra.com

SSH.NET - Aucune méthode d'authentification appropriée trouvée

Ceci est mon code utilisant SSH.NET

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

Cela fonctionne sur un SFTP que j'ai installé sur mon ordinateur local, mais lorsque je le pointe vers un vrai serveur SFTP à partir d'un client, j'obtiens une exception Renci.SshNet.Common.SshAuthenticationException: aucune méthode d'authentification appropriée n'a été trouvée pour terminer l'authentification.

Je ne trouve aucune documentation sur les méthodes d'authentification que je devrais utiliser et sur File Zilla, un simple nom d'utilisateur et mot de passe fait l'affaire.

Quelqu'un peut-il s'il vous plaît conseiller?

13
Shumii

Ok donc la réponse à mon problème est que ce n'était pas un serveur sftp. C'était un simple serveur ftp, donc je viens d'utiliser une requête Web.

Vérifiez d'abord que le serveur est réellement un serveur sftp.

1
Shumii

J'ai trouvé la réponse (au moins pour mon problème, qui semble être le même que l'op demandé):

J'ai dû changer l'authentification en KeyboardInteractiveAuthenticationMethod

Donc ça marche maintenant:

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 passe ensuite le mot de passe:

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;
        }
    }
}
27
CeOnSql