Какие параметры `ServerAliveInterval` и` ClientAliveInterval` в sshd_config точно выполняются?

Я нашел этот вопрос , но мне жаль, что я не совсем понимаю настройки двух переменных ServerAliveInterval и ClientAliveInterval упомянутых в принятом ответе. Если мой локальный сервер отключен, я должен установить это значение равным нулю? Не будет ли тогда тайм-аут? Должен ли я вместо этого установить его на 300 секунд или что-то еще?

Мой вопрос просто, некоторые из моих подключений тайм-аут, когда я приостанавливаю, а затем отказываюсь от моего ноутбука с ответом « Write failed: Broken pipe а некоторые нет. Как я могу правильно настроить локальный sshd, чтобы они не прерывались с разбитым трубой?

  • ssh локальный туннель для VM
  • Удаленный ls на нескольких машинах
  • Отключить баннер ssh для определенных пользователей или ips
  • Добавить ssh pubkey в authorized_keys на локальном хосте (пропуск отсутствует)
  • Должен ли я развертываться с тем же пользователем, который запускает веб-сайт?
  • Хвост журнальных файлов на двух разных хостах
  • Убить фоновый SSH при выходе оболочки
  • Как переключить пользователя с предварительно настроенными учетными данными в SSH-терминал после входа в систему как стандартный пользователь
  • 6 Solutions collect form web for “Какие параметры `ServerAliveInterval` и` ClientAliveInterval` в sshd_config точно выполняются?”

    ServerAliveInterval : количество секунд, которое клиент будет ждать перед отправкой нулевого пакета на сервер (чтобы поддерживать соединение в сети).

    ClientAliveInterval : количество секунд, в течение которых сервер будет ждать, прежде чем отправить нулевой пакет клиенту (чтобы поддерживать соединение в сети).

    Установка значения 0 (по умолчанию) отключит эти функции, поэтому ваше соединение может упасть, если оно слишком долгое время.

    ServerAliveInterval, по-видимому, является наиболее распространенной стратегией для поддержания связи. Чтобы предотвратить проблему с поврежденным трубой, вот конфигурация ssh, которую я использую в моем файле .ssh / config:

     Host myhostshortcut HostName myhost.com User barthelemy ServerAliveInterval 60 ServerAliveCountMax 10 

    Вышеуказанные настройки будут работать следующим образом,

    1. Клиент будет ждать в режиме ожидания в течение 60 секунд (время ServerAliveInterval) и отправить «no-op null packet» на сервер и ожидать ответа. Если ответа не поступит, он будет продолжать пробовать вышеуказанный процесс до 10 (ServerAliveCountMax) раз (600 секунд). Если сервер все еще не отвечает, клиент отключает ssh-соединение.

    ClientAliveCountMax на стороне сервера также может помочь. Это предел того, как долго клиенту разрешено оставаться без ответа перед отключением. Значение по умолчанию равно 3, как в трех ClientAliveInterval.

    Поскольку вы не можете гарантировать, что соединение SSH (являющееся TCP) останется в живых, как только один конец перестанет отправлять ACK на полученные пакеты, я лично использую http://www.harding.motd.ca/autossh/ для перезапуска всех моих SSH-соединений почти сразу, как только я откажусь.

    Поскольку GNU Screen будет использоваться на стороне сервера, повторное подключение приведет меня туда, где я был раньше.

    Вы можете прослушивать дополнительные порты, чтобы он постоянно проверял, что соединения все еще живы, но лично я считаю, что он работает достаточно хорошо с отключенным и просто полагается на собственный ServerAliveInterval / ServerAliveCountMax от SSH.

    Другим вариантом является http://mosh.mit.edu/, который использует UDP и легко восстанавливается из-за долговременного отсутствия возможности подключения.

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

    Нет такой конфигурации для ssh, которая будет поддерживать соединение таким образом. SSH использует TCP, для начала вам нужно трехстороннее рукопожатие, а затем продолжать жить после некоторого простоя. Когда вы завершаете / спящий режим, все ваши TCP-соединения закрываются с помощью FIN. Невозможно преодолеть это.

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

    Вы также можете запускать команды с nohup если вы хотите, чтобы они запускались независимо от вашего SSH-соединения.

    например

    $ nohup tar -xzf some_huge.tar.gz &

    Я, я думаю, не нужен, но это удобно, поскольку он заставляет процесс работать в фоновом режиме, чтобы вы могли делать другие вещи.

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

    Это объясняется в руководстве sshd_config ( man sshd_config ):

    ClientAliveInterval

    Устанавливает интервал ожидания в секундах, после которого, если данные не были получены от клиента, sshd отправит сообщение через зашифрованный канал, чтобы запросить ответ от клиента. Значение по умолчанию равно 0, что указывает на то, что эти сообщения не будут отправляться клиенту. Этот параметр применяется только к протоколу версии 2.

    Значение по умолчанию – 3. Если для ClientAliveInterval (см. Ниже) установлено значение 15, а ClientAliveCountMax остается по умолчанию, невосприимчивые клиенты SSH будут отключены примерно через 45 секунд. Этот параметр применяется только к протоколу версии 2.

    Для параметров клиента см. Объяснение в man ssh_config :

    ServerAliveInterval

    Устанавливает интервал ожидания в секундах, после которого, если данные не были получены с сервера, ssh отправит сообщение через зашифрованный канал, чтобы запросить ответ от сервера. Значение по умолчанию равно 0, что указывает на то, что эти сообщения не будут отправляться на сервер. Этот параметр применяется только к протоколу версии 2.

    Значение по умолчанию равно 3. Если, например, ServerAliveInterval установлено ServerAliveInterval 15, а ServerAliveCountMax остается по умолчанию, если сервер ServerAliveCountMax , ssh отключится примерно через 45 секунд. Этот параметр применяется только к протоколу версии 2.

    Исходя из вышеизложенного, 0 означает, что он отключен. Поэтому вы должны установить эти значения достаточно высокими, чтобы избежать ошибки Broken pipe .

    Поместите свою длинную сессию внутри экрана. См. Экран -h для получения более подробной информации.

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

    Linux и Unix - лучшая ОС в мире.