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

9

У меня была странная проблема с соединениями 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

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

Кристиан
источник

Ответы:

15

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

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

Экес
источник
Круто, спасибо за это быстрое решение! В настройках Putty я снял флажок «Отключить алгоритм Nagle» (который, по-видимому, отмечен по умолчанию), и теперь он работает!
Кристиан
@Christian спасибо за подтверждение, я немного упростил свой ответ
eckes
@ Кристиан, я в замешательстве. Вы включили алгоритм Nagle, и теперь символы не приходят в больших пакетах? Это кажется мне неправильным, так что, возможно, ответ до редактирования был на самом деле лучше.
Карстен С.
@CarstenS да, все, что я сделал, это снял галочку с «отключить алгоритм Нейгла» в Putty, что означало, что я его включил . Но я думаю, что это более старая версия Putty, так что, возможно, ярлык на флажке неправильный
Кристиан,
Хм, действительно странно.
eckes