web-dev-qa-db-ja.com

SSH.NET-適切な認証方法が見つかりません

これはSSH.NETを使用した私のコードです

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

ローカルコンピューターにインストールしたSFTPで動作しますが、クライアントから実際のSFTPサーバーを指すと、Renci.SshNet.Common.SshAuthenticationException:適切な認証方法が見つからず、認証を完了できません。

どの認証方法を使用するべきか、そしてFile Zillaで簡単なユーザー名とパスワードがうまくやっているドキュメントが見つかりません。

誰かアドバイスしてくれませんか?

13
Shumii

わかりましたので、私の問題の答えは、それがsftpサーバーではなかったということです。それは単純なFTPサーバーだったので、Webリクエストを使用しました。

サーバーが実際に最初にsftpサーバーであることを確認してください。

1
Shumii

私は答えを見つけました(少なくとも私の問題では、要求された操作と同じようです):

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