SSH.NET - 未找到合适的身份验证方法

本文关键字:身份验证 方法 NET SSH | 更新日期: 2023-09-27 18:30:54

这是我使用 SSH.NET 的代码

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

它适用于我在本地计算机上安装的SFTP,但是当我从客户端将其指向真正的SFTP服务器时,我得到一个Renci.SshNet.Common.SshAuthenticationException:没有找到合适的身份验证方法来完成身份验证。

找不到任何关于我应该使用哪种身份验证方法的文档,并且在 File Zilla 上一个简单的用户名和密码就可以解决问题。

任何人都可以提供建议吗?

SSH.NET - 未找到合适的身份验证方法

我找到了答案(至少对于我的问题,这似乎与请求的操作相同):

我不得不将身份验证更改为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;
        }
    }
}
好的,

所以我问题的答案是它不是 sftp 服务器。这是一个简单的ftp服务器,所以我只使用了一个webrequest。

首先检查服务器是否确实是 sftp 服务器。