16 Ноябрь 2017

Comments

0
 Ноябрь 16, 2017
 0

Иногда бывает, вы отходите от своего рабочего места, допустим дома, а у вас в консоли выполняется некий скрипт на сервере. Возвращаетесь и видите такую картину:

И вот ваше управление закончилось 🙂 Что же делать? Как же быть? Такое может быть, если у вас не очень добросовестный провайдер. Как исправить баги провайдера?

Оказывается, можно указать лимиты для ssh сессий. Допустим так:

ServerAliveInterval 30
ServerAliveCountMax 5

ServerAliveInterval этот параметр задаёт время в секундах которое клиент будет ожидать перед посылкой null на сервер. Т.е. закрывать сессию. Почему же спросите вы клиент посылает запрос на разрыв связи? Очень просто, Опять же недобросовестный провайдер может терять пакеты, может обрывать соединение, пусть на очень короткий срок, скажем на 1 сотую секунды, но и этого хватит, чтобы клиент подумал, что сервер закрыл соединение и клиент спешит подтвердить это. Так как ssh протокол является Statefull т.е. постоянным, то между клиентом и сервером идёт неприрывный поток информации, такой себе ping — pong, вопрос, ответ, ты жив, я жив, ну ок 🙂

ServerAliveCountMax Это кол во сообщений, которые послывает клиент серверу и может не ожидать ответа от сервера. Вот допустим, у нас потерялось соединение, пропал инет, клиент посылает сообщение, а в ответ тишина, как в старой доброй песне, вот клиент и принимает решение закрыть соединение с сервером. Этот же параметр предотвращает это. Ну разумеется в разумных пределах. Если ваш провайдер где-то потерял свой интернет и не предоставляет вам услугу достаточно продолжительное время, то клиент по истечении ServerAliveCountMax запросов всё же примет решение о закрытии сессии.

Так, хорошо, куда же засунуть эти параметры? В конфигурационном файле ssh: /etc/ssh/ssh_config

В дистрибутивах основанных на Debian, эти параметры не установлены, потому вам придётся их дописать самостоятельно.

Но можно пойти и по другому пути, если допустим вы не имеете доступа к ssh_config, то можно для локального пользователя настроить эти параметры, делается это в ~/.ssh/config Вот вам и пример:

Host server
  HostName server.ru
  Port 22
  User root
  ServerAliveInterval 30
  ServerAliveCountMax 5

Так даже может быть удобнее, таким образом вы можете открыть ssh используя комманду в консоли:

ssh server

Т.е. вы создали файл, который только для вас немного модифицировал глобальные настройки ssh

Добавить комментарий