问题
This is my code using SSH.NET
using (var sftp = new SftpClient(host, username, password))
{
sftp.Connect();
}
It works on a SFTP I installed on my local computer but when I point it at a real SFTP server from a client I get a Renci.SshNet.Common.SshAuthenticationException: No suitable authentication method found to complete authentication.
I cannot find any documentation on what authentication methods I should be using and on File Zilla a simple user name and password is doing the trick.
Can anyone please advise?
回答1:
I found the answer (at least for my problem, which seems to be the same as the op requested):
I had to change the Authentication to KeyboardInteractiveAuthenticationMethod
So this works now:
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
then passes the Password:
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;
}
}
}
回答2:
Ok so the answer to my problem is that it wasn't an sftp server. It was a simple ftp server so i just used a webrequest.
Check the server is actually an sftp server first.
来源:https://stackoverflow.com/questions/34875331/ssh-net-no-suitable-authentication-method-found