gpt4 book ai didi

c# - 使用 SSH.NET 连接到 OpenSSH 7.4p1 失败并显示 "The server response contains a null character at position"但在 WinSCP 中有效

转载 作者:行者123 更新时间:2023-12-02 16:19:45 24 4
gpt4 key购买 nike

我正在尝试使用 SSH.NET (2020.0.0) 连接到 SFTP 服务器。

我的代码看起来很简单:

try
{
var x = new ConnectionInfo(FtpIpAddress, 22, FtpUser,
new PasswordAuthenticationMethod(FtpUser, FtpPw));

using (var sftpClient = new SftpClient(x))
{
sftpClient.Connect();
sftpClient.Disconnect();
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}

但是当我运行代码时,出现以下错误:

The server response contains a null character at position 0x00000028:  
00000000 53 53 48 2D 32 2E 30 2D 4F 70 65 6E 53 53 48 5F SSH-2.0-OpenSSH_
00000010 37 2E 34 70 31 20 44 65 62 69 61 6E 2D 31 30 2B 7.4p1 Debian-10+
00000020 64 65 62 39 75 32 0A 00 deb9u2..
A server must not send a null character before the Protocol Version Exchange is complete.

我不知道如何解决它,当手动使用 WinSCP 时它工作正常,当使用 WinSCP.NET 时,它与代码一起工作也很好。但是我不能在 Linux 发行版上使用 WinSCP.NET。

所以有人知道出了什么问题吗?

最佳答案

SSH.NET (2020.0.0) 期望 SSH 服务器版本字符串以 CRLF (0D0A) 序列结尾。

您的服务器似乎只发送 LF (0A)。

WinSCP 更宽容——它对 LF 很满意。

查看 OpenSSH 源代码,似乎 OpenSSH 7.4p1(仅特定版本)仅发送 LF。旧版本没有这个问题。它在 OpenSSH 7.5 中得到修复。似乎他们甚至不认为这是一个错误,因为 change未包含在 7.5 release notes 中.

正如您自己发现的那样,SSH.NET 2016.1.0 也只对 LF 感到满意。

SSH.NET 2020.0.1 专门针对 this issue 发布.


可能导致相同错误消息的完全不同的问题:"The server response contains a null character" when connecting to FTP site on port 990 using SSH.NET .

关于c# - 使用 SSH.NET 连接到 OpenSSH 7.4p1 失败并显示 "The server response contains a null character at position"但在 WinSCP 中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65777501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com