【发布时间】:2016-08-21 21:40:02
【问题描述】:
我有以下代码尝试连接到使用 OpenSSH 构建的 SFTP 服务器(该服务器正常工作,因为我已经能够通过 WinSCP 客户端成功连接到该 FTP):
ConnectionInfo ConnNfo = new ConnectionInfo("127.0.0.1", 22, "usertest",
new AuthenticationMethod[]{
// Pasword based Authentication
new PasswordAuthenticationMethod("usertest","usertest"),
}
);
// Upload A File
using (var sftp = new SftpClient(ConnNfo))
{
sftp.Connect();
sftp.ChangeDirectory(@"/C:/IISFTP/");
using (var uplfileStream = File.OpenRead(uploadfn))
{
sftp.UploadFile(uplfileStream, uploadfn, true);
}
sftp.Disconnect();
}
调用sftp.Connect() 行时,会引发以下异常:
消息类型 80 无效
为什么会这样?如何使用 SSH.NET 连接到我的 SFTP 服务器?
谢谢
【问题讨论】:
-
您的代码适用于我刚刚尝试过的 solaris 盒子 - 有一条消息说另一个 ssh 库有问题的 openssh.. 但它是一个较旧的..
-
什么版本的 OpenSSH 和什么版本的 SSH.NET?
-
@MartinPrikryl SSH.Net 版本:尝试了最新的源代码和 Nuget 包(在撰写本文时为 v2013.4.7)。 OpenSSH(我做了一个 ssh -v localhost):OpenSSH_7.1p1 Microsoft_Win32_port_with_VS,OpenSSL 1.0.2d 2015 年 7 月 9 日
-
我今天发布了 SSH.NET 的 beta 版 2016.0.0-beta1,修复了这个问题:>* 成功验证后立即收到 SSH_MSG_GLOBAL_REQUEST 时的竞争条件(GitHub 问题 #8)预发布版 NuGet 包可用here。
标签: c# ssh sftp openssh ssh.net