SSH "зависает" в локальной сети на некоторых машинах, смешанные дистрибутивы

У меня была странная проблема с соединениями SSH внутри моей локальной сети в течение нескольких месяцев. Это происходит только тогда, когда я использую свое устройство Windows 10 для подключения к (barebone) машине с Linux.

Когда я подключаюсь к SSH-серверу, мой ввод отправляется только один раз в секунду. Если я держу клавишу, она ничего не печатает в течение секунды, и после этой секунды я вижу каждое нажатие клавиши, которое я сделал за это время.

Вот как это выглядит на рабочих серверах:

Вот как это выглядит на проблемах:

Вещи, которые я проверил / узнал

  • Изменение параметра "UseDNS" в /etc/sshd не исправляет
  • Это происходит с bash (и zsh) в Debian (OpenSSH_7.4p1 Debian-10+deb9u6, OpenSSL 1.0.2r 26 февраля 2019 г.) и Ash в Alpine Linux (OpenSSH_7.9p1, OpenSSL 1.1.1b 26 февраля 2019 г.)
  • Это не происходит в Alpine Linux OpenSSH_7.7p1, LibreSSL 2.7.4
  • Это происходит не с каждой машиной, только с некоторыми (не в зависимости от дистрибутива)
  • resolv.conf правильный
  • Ошибка происходит с и без ClientAliveInterval (проверено на клиенте и сервере)
  • Проверка связи с устройствами всегда быстрая (менее 1 мс), поэтому используется только SSH
  • Он также отстает, когда я ssh из подсистемы Linux на Windows 10 и с Putty и с MobaXterm
  • Нет проблем при подключении из Linux вместо Windows

У кого-нибудь есть какие-нибудь подсказки или вещи, которые я мог бы попробовать? Спасибо

1 ответ

Решение

Как правило, это признак алгоритма Nagle, вы можете отключить эту опцию сокета.

(Я видел подобные задержки TCP между Linux и Windows и раньше в других случаях. В одном случае это было вызвано взаимодействием между размерами TCP Windows и флагами PSH (Push), из-за которого Windows опоздала и / или повторила попытку.)

Другие вопросы по тегам