C# Renci SshNet 服务器响应在位置 0x0000002A

问题描述

我有多个树莓派与 SSH 服务器一起运行: (OpenSSH_7.4p1 Raspbian-10+deb9u7,OpenSSL 1.0.2u 2019 年 12 月 20 日)。 如果我尝试通过 Renci SshNet 进行连接,则会收到以下错误消息:

Renci.SshNet.Common.SshConnectionException: "服务器响应 在位置 0x0000002A 处包含一个空字符:

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 52 61 73 70 62 69 61 6E 2D 31 7.4p1 Raspbian-1 00000020 30 2B 64 65 62 39 75 37 0A 00
0+deb9u7..

服务器不得在协议版本之前发送空字符 交换完成。

在此处提供更多信息: https://tools.ietf.org/html/rfc4253#section-4.2"

SshClient scclient = new SshClient("123.123.123.123","pi","raspBerry");
scclient.Connect();

是否可以改变 ssh 服务器的行为, 甚至更好;我可以告诉 renci ssh 忽略这些协议错误吗?

解决方法

我认为这是最新的 SSH.NET NuGet 包的问题。目前最新的是2020.0.0。之前的那个是 2020.0.0-beta1

2020.0.0 给我这个问题,2020.0.0-beta1 没有。

我将在 https://github.com/sshnet/SSH.NET/issues

报告此问题

编辑:

2020.0.1 刚刚发布。那个好像没有这个问题。我建议你试试那个版本。