Я пытаюсь сосредоточиться на точном варианте или комбинации параметров, которые заставят каждый сеанс SSH завершаться, если он неактивен в течение определенного времени. Я использую Putty для SSH на сервере RHEL AS3; Для Putty для пакетов Keepalive установлено значение «off» (0), а пакеты keepalive закомментированы в файлах ssh_config и sshd_config.
Я перебрасывал через Google в разные места и нашел кое-что интересное на ServerFault, но надеюсь найти «конкретное» решение. Я попытался изменить файл / etc / ssh / sshd_config, добавив это:
ClientAliveInterval 15 ClientAliveCountMax 1
(Для тестирования установлено 15 секунд)
Затем перезапустили SSH:
/ sbin / service sshd перезапуск
Но не повезло; сеанс никогда не истекал по таймауту (проверено через 23 минуты). Я также попытался изменить параметры ядра "keepalive":
% echo "60"> / proc / sys / net / ipv4 / tcp_keepalive_time (по умолчанию 7200)
% echo "1"> / proc / sys / net / ipv4 / tcp_keepalive_probes (по умолчанию 9)
% echo "5"> / proc / sys / net / ipv4 / tcp_keepalive_intvl (по умолчанию 75)
Но сессия оставалась активной (проверено через 8 минут). Любая помощь в том, какой кусок головоломки мне не хватает, будет очень благодарна. Спасибо!
--- DT
Большая часть того, что вы устанавливаете, выглядит как настройки tcp. Вам нужно указать своей оболочке, чтобы она вышла из системы. Комментарий о настройке TMOUT = 3600 на час - тот, который я оценил. Вы можете поместить это в глобальный профиль (/etc/profile
)
Сообщения поддержки активности tcp связаны с тем, как часто отправляются пакеты для поддержания активности сеанса tcp. например, если в течение минуты не было трафика и для tcp keep alive установлено значение 60 секунд, то будет отправлен пакет keep alive, чтобы поддерживать сеанс активным. Это разумный набор описаний различных переменных TCP.
я использую export TMOUT=3600
в моем ~ / .bashrc, чтобы закрыть неактивный сеанс через 1 час.
У меня ClientAliveInterval 600 ClientAliveCountMax 0, и он работает
Вы пробовали установить значение IdleTimeout? Это старый параметр, но я не уверен, какую версию ssh вы используете, поэтому он все еще может работать. Вы также можете установить тайм-аут простоя на стороне клиента. Лично я бы увеличил настройки поддержки активности до значения, которое обычно устанавливается, например, 600 секунд с 3 сообщениями поддержки активности, и посмотрю, работает ли это.
Я фанат простоя. Да, это дополнительный демон пользовательского пространства, но он прекрасно работает.
http://www.itworld.com/nls_unix_login2
Архив с исходным кодом: http://sourceforge.net/projects/idled/files/idled/
(Исходная ссылка была: http://www.netsw.org/system/tools/process/ но вроде в данный момент не работает)
Вы проверили, не было ли конфликта IP с вашим сервером? Я испытал этот случай, когда настраивал виртуальный сервер CentOS с VMWare Workstation и использовал мостовой вариант. Виртуальный сервер сначала работает нормально, но примерно через час мой сеанс putty ssh быстро отключается от сервера после повторной попытки подключения.
Если вы хотите установить тайм-аут удаленных команд, которые запускаются неинтерактивно с использованием ssh, вы можете использовать что-то вроде этого:
( sleep $timeout && kill -9 0 ) 2>/dev/null & $cmd; RC=$? ; pkill -P $! ; exit $RC;