某些机器上的SSH在局域网中“滞后”,混合发行版


9

几个月来,我的局域网内的SSH连接出现了一个奇怪的问题。仅当我使用Windows 10设备连接到(准系统)Linux计算机时,才会发生这种情况。

当我连接到SSH服务器时,就像我的输入每秒仅发送一次。如果我按住某个键,它一秒钟不会打印任何内容,在那一秒钟之后,我会看到这段时间内所做的每一次击键。

这是在工作服务器上的外观:

这是问题所在的外观:

我测试过/发现的事情

  • 更改/ etc / sshd中的“ UseDNS”设置无法解决该问题
  • 它在Debian(OpenSSH_7.4p1 Debian-10 + deb9u6,OpenSSL 1.0.2r 2019年2月26日)和Ash在Alpine Linux(OpenSSH_7.9p1,OpenSSL 1.1.1b 2019年2月26日)上使用bash(和zsh)发生
  • 在Alpine Linux OpenSSH_7.7p1,LibreSSL 2.7.4上不会发生这种情况
  • 并非每台机器都发生这种情况,只有一部分机器会发生(不取决于发行版)
  • resolv.conf是正确的
  • 使用和不使用ClientAliveInterval都会发生错误(已在客户端和服务器上测试)
  • 对设备执行ping操作总是非常快(少于1毫秒),因此只有SSH
  • 当我从Windows 10上的Linux子系统以及Putty和MobaXterm ssh SSH时,它也会滞后
  • 从Linux而不是Windows连接时没有问题

有人能提供任何线索或尝试的方法吗?谢谢

Answers:


15

通常,这是Nagle算法的标志,您可以关闭该套接字选项。

(在其他情况下,我之前也曾在Linux和Windows之间看到过类似的TCP延迟。在一种情况下,这是由于TCP Windows大小与PSH(推送)标志之间的相互作用导致Windows确认延迟和/或重试。)


太好了,谢谢您的快速修复!在Putty设置中,我未选中“禁用Nagle的算法”复选框(默认情况下似乎已选中),现在它可以工作了!
基督教

@Christian感谢您的确认,我简化了回答
eckes

@克里斯蒂安,我很困惑。您启用了 Nagle的算法,现在这些字符不再出现在较大的数据包中了吗?这对我来说似乎是错误的方法,因此也许在编辑之前的答案实际上更好。
卡斯顿

@CarstenS是的,我所做的就是取消选中Putty中的“禁用Nagle算法”,这意味着我启用了它。但是我认为它是Putty的旧版本,因此复选框上的标签可能是错误的
Christian

嗯,确实很奇怪。
eckes
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.