Как мне оставаться в системе, пока установлен ClientAliveInterval?

Как мне оставаться в системе, пока установлен ClientAliveInterval?

В целях соответствия требованиям все мои серверы Debian настроены на тайм-аут через 15 минут с использованием следующей конфигурации/etc/ssh/sshd_config

ClientAliveInterval 900
ClientAliveCountMax 0

Конечно, это делает работу на этих серверах утомительной и опасной, поскольку любой простой может привести к отключению.

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

решение1

Если вы следуетеруководство по технической реализации безопасностив настоящее время он заявляет

ClientAliveInterval                        600
ClientAliveCountMax                        0

который отключит ипраздныйсеанс ssh (т.е. окно putty) через 10 минут.

В RHEL 7 значения по умолчанию для этих двух элементов, начиная с чистой установки из rhel-server-7.9-x86_64-dvd.iso или centos, равны 0и 3соответственно, что приводит к тому, что сеанс ssh никогда не завершается автоматически.

более подробную информацию см.:https://stackoverflow.com/questions/71174746/clientaliveinterval-is-not-closing-the-idle-connection

наиболее актуальными:Они не предназначены для случаев бездействия пользователя, они предназначены — как отмечено в отрывке из man-страницы — для неотвечающих клиентов SSH. Клиент не будет отвечать, если клиентская программа зависла или соединение было разорвано. Клиент не должен не отвечать просто потому, что пользователь-человек отошел от клавиатуры: клиент ssh все равно будет получать пакеты, отправленные с сервера.

Это у клиента,в putty.exe, подСвязьиВарианты управления соединениеместьсекунд между сообщениями keepalive (0 для отключения). По умолчанию это 0. Установите это число меньше, чем ClientAliveIntervalустановлено в sshd_config.

Если не использовать putty.exe из Windows, а использовать ssh с другого компьютера Linux, то клиент ssh настраивается через , /etc/ssh/ssh_configоднако там нет соответствующего элемента, о котором я знаю, чтобы время от времени отправлять пакет проверки активности.

Примечание: при использовании putty.exe из Windows с его значением keepalive по умолчанию 0 и сервером ssh, имеющим установленный ClientAliveInterval, даже если он viоткрыт, соединение будет отключено, что приведет к ошибкепотерянныйфайл, который viвосстановится через свой файл .swp. Или если запущенная программа постоянно выдает вывод, то есть со стороны сервера, и соединение ssh будет прервано, убив вашу работу... должно быть что-то со стороны клиента (нажатие клавиши), что учитывается и вызываетподдерживать активность. Так что с putty.exe из Windows это довольно просто исправить, для ssh из Linux в Linux я не знаю, как предотвратить отключение без нажатия клавиши на клавиатуре на стороне клиента в сеансе ssh.

обновление: с linux на linux, похоже, нужно использовать ssh -oи различные опции. Подробнее см.:Как работает tcp-keepalive в ssh?

например: ssh -o ServerAliveInterval=5 -o ServerAliveCountMax=1

что-то вроде /etc/yum.conf с gpgcheck=1, и просто делаемyum установить --nogpgcheck :)

решение2

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

ClientAliveCountMax

Устанавливает количество сообщений о состоянии клиента, которые могут быть отправлены без получения sshd(8) каких-либо сообщений от клиента. Если этот порог будет достигнут во время отправки сообщений о состоянии клиента, sshd отключит клиента, завершив сеанс. Важно отметить, что использование сообщений о состоянии клиента сильно отличается от TCPKeepAlive. Сообщения о состоянии клиента отправляются по зашифрованному каналу и, следовательно, не могут быть подделаны. Параметр TCP keepalive, включенный TCPKeepAlive, подделан. Механизм состояния клиента полезен, когда клиент или сервер зависят от знания того, когда соединение стало неактивным.

Theзначение по умолчанию 3. ЕслиClientAliveInterval установлен на 15, а ClientAliveCountMax оставить по умолчанию, не отвечающие клиенты SSH будут отключены примерно через45 секунд.

Но должен признать, что согласен с @TienPhan. Лучше хранить конфигурацию вне сервера. Тем не менее, это зависит от варианта использования. Если все пользователи должны обрабатываться одинаково, то конфигурация на стороне сервера — это вариант.

решение3

На самом деле, нам не нужно устанавливать интервал времени на стороне сервера. Больше вещей не сделают вас счастливыми.

Вы можете использовать «ServerAliveInterval» и добавить его в файл ~/.ssh/config, как показано ниже:

host *
        ServerAliveInterval 120

Примечание: 120 — это секунды, вы можете изменить их по своему усмотрению.

Тогда это повлияет на все серверы в этом файле. Или вы можете установить для отдельного сервера.

Связанный контент