SSH.NET - 未找到合适的身份验证方法
SSH.NET - No suitable authentication method found
这是我使用 SSH.NET
的代码
using (var sftp = new SftpClient(host, username, password))
{
sftp.Connect();
}
它可以在我安装在本地计算机上的 SFTP 上运行,但是当我将它指向来自客户端的真实 SFTP 服务器时,我收到 Renci.SshNet.Common.SshAuthenticationException:找不到合适的身份验证方法来完成身份验证。
我找不到任何关于我应该使用什么身份验证方法的文档,在 File Zilla 上,一个简单的用户名和密码就可以了。
谁能指教一下?
好的,我的问题的答案是它不是 sftp 服务器。这是一个简单的 ftp 服务器,所以我只使用了一个网络请求。
首先检查服务器是否为sftp服务器。
我找到了答案(至少对于我的问题,这似乎与操作请求的相同):
我必须将身份验证更改为 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;
}
}
}
这是我使用 SSH.NET
的代码using (var sftp = new SftpClient(host, username, password))
{
sftp.Connect();
}
它可以在我安装在本地计算机上的 SFTP 上运行,但是当我将它指向来自客户端的真实 SFTP 服务器时,我收到 Renci.SshNet.Common.SshAuthenticationException:找不到合适的身份验证方法来完成身份验证。
我找不到任何关于我应该使用什么身份验证方法的文档,在 File Zilla 上,一个简单的用户名和密码就可以了。
谁能指教一下?
好的,我的问题的答案是它不是 sftp 服务器。这是一个简单的 ftp 服务器,所以我只使用了一个网络请求。
首先检查服务器是否为sftp服务器。
我找到了答案(至少对于我的问题,这似乎与操作请求的相同):
我必须将身份验证更改为 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;
}
}
}