Shu*_*mii 13 .net c# ftp ssh sftp
这是我使用SSH.NET的代码
using (var sftp = new SftpClient(host, username, password))
{
sftp.Connect();
}
Run Code Online (Sandbox Code Playgroud)
它适用于我本地计算机上安装的SFTP,但当我从客户端指向真正的SFTP服务器时,我得到一个Renci.SshNet.Common.SshAuthenticationException:没有找到合适的身份验证方法来完成身份验证.
我找不到任何关于我应该使用哪种身份验证方法的文档,而在File Zilla上,一个简单的用户名和密码就是这样做的.
任何人都可以建议吗?
CeO*_*Sql 30
我找到了答案(至少对我的问题,似乎与op要求的相同):
我不得不将身份验证更改为 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();
}
Run Code Online (Sandbox Code Playgroud)
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
好吧,我的问题的答案是它不是 sftp 服务器。这是一个简单的 ftp 服务器,所以我只使用了一个网络请求。
首先检查服务器是否确实是 sftp 服务器。
| 归档时间: |
|
| 查看次数: |
14094 次 |
| 最近记录: |