У меня есть ssh-соединение с машиной, которая отключается этой машиной после 30 минут отсутствия ввода пользователя. Тем не менее, если я начну что-то вроде top
, соединение остается в живых. Поскольку это клиентская машина, я не могу перенастроить SSH-сервер этой машины. Поэтому я ищу способ автоматически обнаружить безделье и начать что-то подобное top
. Вид "заставки" для Bash.
Я знаю, что я могу сделать это с screen
, но, к сожалению screen
, не установлен, и я не могу установить программное обеспечение. Поэтому мне нужно использовать то, что предлагает Bash.
Чтобы было понятно: я ищу решение, которое я запускаю один раз после входа в систему, а затем хочу использовать этот терминал, уйти, вернуться через два часа и продолжить работу, ничего не печатая, прежде чем уйти. Кроме того, я не ищу туннельные вещи (для этого я рекомендую отличный инструмент sshuttle )
Любые идеи?
Ответы:
Проблема в том, что есть что-то (обычно брандмауэр или балансировщик нагрузки), которое отбрасывает пустые сеансы. Если вы сконфигурируете сообщения активности сеанса, они будут препятствовать тому, чтобы сетевые устройства рассматривали сеанс как бездействующий.
Исправление для Linux / Unix / Cygwin OpenSSH :
самое простое исправление - включить поддержку активности клиента ssh; этот пример будет отправлять ssh keepalive каждые 60 секунд:
Если вы хотите включить это на всех ваших сессиях, укажите это в вашем
/etc/ssh/ssh_config
или~/.ssh/config
:Для получения дополнительной информации см.
ssh_config
Справочную страницуЗамазка исправить :
Сохраните это в вашей PuTTY "Настройки по умолчанию" ...
источник
В дополнение к ответу Майка Пеннигтона , я бы хотел, чтобы вы знали об этом
ServerAliveCountMax
.ServerAliveInterval
Пошлет Keepalive каждые х секунд ( по умолчанию 0 , который отключает эту функцию , если не установлен на что - то другое).ServerAliveCountMax
раз, если ответ не получен. Значением по умолчаниюServerAliveCountMax
является 3 (см. Man-страницу ssh_config ).Пример: если вы установите
ServerAliveInterval
значение 60 и оставите всеServerAliveCountMax
как есть, это означает, что keepalive будет ждать только3 * 60 = 180 seconds =
3 минуты, прежде чем выйти.Чтобы увеличить это, например, до 2 часов попыток сохранить соединение живым, вы можете сделать:
По команде:
Поэтому вы должны рассмотреть возможность установить
Стойкие:
Чтобы сделать это постоянным, напишите это
/etc/ssh/ssh_config
(будет применяться в масштабе всей системы) или~/.ssh/config
(будет применяться только для пользователя):Заметка
Как правильно указал dislick , это может быть не тем, что вы хотите, в зависимости от вашей ситуации:
ServerAliveCountMax
.ServerAliveCountMax
чтобы позволитьssh
продолжать пытаться восстановить соединение.Смотрите также:
источник
ServerAliveCountMax
указывает количество живых сообщений сервера, которые могут быть отправлены без получения каких-либо сообщений от сервера. Если вы хотите ,ssh
чтобы выйти после того, как она замерзает (так что вы можете перезапустить его) , вы должны действительно установитьServerAliveCountMax
на низкое число. Смотрите ссылку на страницу руководства .Я использую Mobaxterm и также столкнулся с этой проблемой. Mobaxterm также поставляется с опцией, чтобы сохранить клиента живым, когда клиент простаивает. Перейти к
Settings -> Configuration -> SSH
. Есть раздел под названиемSSH settings
, отметьте опциюSSH keepalive
. Тогда проблема должна исчезнуть.источник