SSH зависает с высокой задержкой соединения (соединение на международном уровне) - PullRequest
4 голосов
/ 20 мая 2009

В последнее время мое программирование действительно расстраивает.

Я сейчас в Аргентине и подключаюсь к серверу США через SSH. Понятно, что пинг здесь немного выше (в среднем около 200 мс), поэтому, когда я подключаюсь по SSH к серверу, между каждым нажатием клавиши появляется небольшая задержка. Это нормально и достаточно просто для работы.

С чем нелегко работать, так это то, что примерно каждые 5 минут или около того SSH полностью зависает и занимает около 3-5 минут, чтобы вернуться назад. Я знаю, что сервер не перегружен, потому что я могу легко открыть несколько новых соединений, пока я жду, когда одно из них вернется (на самом деле это единственный способ, которым я смог работать). И когда SSH наконец-то возвращается, я вижу, что он фактически работал в фоновом режиме (загрузка больших файлов была хорошим способом проверить это), но он просто не обновлял мой экран.

Кто-нибудь знает, что может быть причиной этого?

Несколько других фактов: сервер Ubuntu, и я подключаюсь к Mac OS X. У меня включен keepalive в настройках SSH. Скорее всего, зависание, когда я удерживаю клавишу (например, стрелку влево или вправо для прокрутки), которая быстро отправляет множество клавиш. Фактически, я могу надежно воспроизвести зависание, войдя в систему и удерживая любую клавишу, например «а» - она ​​никогда не преодолеет полную строку «а» перед зависанием. Это только началось, когда я впервые подключился к международной сети, поэтому я предполагаю, что это как-то связано с этим (задержка?), Но точно сказать не могу.

Ответы [ 7 ]

4 голосов
/ 20 мая 2009

Одд. Я не могу помочь вам с вашей проблемой, но у меня есть совет, чтобы сделать ее менее раздражающей: используйте screen(1). Это сохранит вашу оболочку на другом конце, и вы сможете продолжить все, что вы делали после повторного подключения.

Если вам нужно только запустить команду на другой стороне, я предлагаю передать команду в качестве опции ssh (она подключится, выполнит команду, отобразит результат и отключится).

1 голос
/ 07 октября 2009

Я думаю, что здесь, в Аргентине, была какая-то проблема с провайдером. Когда я переключился на другую беспроводную сеть с другим провайдером, он начал работать. Вероятно, они играют в какие-то портовые игры или кто что знает.

0 голосов
/ 22 марта 2011

У меня была похожая проблема с 'cat' и даже с 'ls -l', вызывающей зависание ssh (в Ubuntu). Настройка размера MTU до 1400 исправила это для меня.

0 голосов
/ 21 мая 2009

Что ж, теперь я подключен к другой беспроводной сети, и проблема, похоже, исчезла. Я не могу точно сказать, что именно было причиной этого (и у меня нет доступа к беспроводному маршрутизатору при входе в систему), но, похоже, это говорит о том, что это было что-то на маршрутизаторе, а не на сервере или клиентском компьютере.

И старый, и новый маршрутизаторы были Linksys WRT54G, поэтому я не уверен, в чем проблема. Надеюсь, это кому-нибудь поможет!

0 голосов
/ 20 мая 2009

Попробуйте ввести несколько подробных флагов (ssh -vv [vv] somehost) и посмотреть, есть ли что-нибудь показательное, напечатанное во время зависания.

0 голосов
/ 20 мая 2009

Я привык к ssh через ссылки с высокой задержкой - 600 мс. Это медленно, но у меня редко возникали проблемы. Для начала - откройте другое окно терминала, пингуйте ваш сервер и наблюдайте за соединением. Расскажите нам, что вы видите.

0 голосов
/ 20 мая 2009

Попробуйте настроить размер окна TCP .

...