Тайм-аут простоя сессии SSH


9

Машина Solaris, на которой мы работаем большую часть нашей разработки, имеет раздражающую привычку тайм-аутов SSH-сеансов. Не имеет значения, является ли клиент моим рабочим столом Ubuntu, моим рабочим столом Solaris или моим рабочим столом Windows (putty); общий фактор - большая машина Solaris.

Могу ли я что-нибудь сделать, чтобы это не произошло? Это раздражает, когда вы берете перерыв на обед, и терминальные сессии, которые вы открываете и деликатно настраиваете, все заморожены, поэтому вам нужно убить их всех и восстановить весь ваш контекст.

Ответы:


8

Да. Настройте SSH для отправки пакетов поддержки активности .


У нас уже есть KeepAlive Yes в / etc / ssh / sshd_config. У него не было значения ClientAliveInterval, хотя; так что я добавил это, и мы посмотрим, как это пойдет.
Эндрю

1
Также стоит отметить, что вы можете сделать это и наоборот. Если вы не можете изменить конфигурацию сервера, вы можете заставить клиента ssh отправлять пакеты поддержки активности, используя ServerAliveInterval.
SpoonMeiser

Местоположение этой статьи изменилось. Вот текущий: forumone.com/blogs/post/quick-tip-ssh-keepalive
Джон Башир

2

Я обнаружил, что поведение keepalive не совсем работает. Я попытался добавить ServerAliveInterval в сценарий ~ / .ssh / config, но он не очень подходит для git.

В итоге я добавил метку времени в строку состояния моего экрана. Этого достаточно, чтобы поддерживать связь.


Если вы хотите использовать эту функцию вне экрана (1), посмотрите Spinner
Drew Stephens

1

Вы можете настроить Putty для отправки пакетов поддержки активности.

В Настройках, Соединение, Секунды между keepalive.


1

Во-первых, вам нужно определить, является ли ваша оболочка, которая выводит вас из системы, или ssh. Чтобы проверить, подключитесь по ssh к вашей удаленной машине и найдите файл vi или менее.

Если в течение долгого времени вы все еще можете перемещаться меньше / vi, то с ssh все в порядке. В этом случае определите, какую оболочку вы используете, и отключите тайм-аут. Скорее всего, это таймер, а не SSH. Тем не менее, некоторые брандмауэры будут закрывать пустые сеансы, если сообщения об активности не отправляются.

Администратор Solaris может запретить отключение тайм-аута в вашей оболочке, установив этот параметр только для чтения. Это маловероятно, но возможно. Обычно вы можете обойти это, используя другую оболочку.


1

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


0

Если вы запустите tcsh на компьютере Solaris, можно установить переменную autologout. Если вы установите его на 0 (установите autologout = 0) или отмените его (unset autologout), он прекратит выход из системы.


0

Это может быть красная сельдь, но попробуйте

unset TMOUT

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



0

Вы могли бы запустить topв другом терминале? Что должно генерировать регулярный трафик?


0

Spinner звучит как идеальное решение вашей проблемы. Он периодически отправляет символы в вашем сеансе, чтобы не допустить его истечения.


-1

У меня всегда был успех с «ClientAliveInterval 300» на серверах Linux / BSD.


-1

Проверьте свою sshdконфигурацию для линий, подобных этим в /etc/ssh/sshd_config:

ClientAliveInterval 600
ClientAliveCountMax 0
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.