Как сделать замазку, чтобы не нарушать мою сессию через некоторое время?


34

Каждый раз puttyзакрывает сессию через некоторое время, если она простаивает.

В putty нет timeпараметров, так как я могу сохранить мой puttyssh-сеанс всегда живым?

Ответы:


15

Еще одна вещь, которую нужно проверить, - устанавливает ли ваша система переменную окружения TMOUT. Чтобы проверить это, вы можете просто сделать:

env | grep TMOUT

или

echo $TMOUT

Если он установлен, вы можете изменить его или сбросить. Чтобы изменить значение:

export TMOUT=3600

Где число - это количество секунд до выхода из системы. В противном случае отключите его, чтобы отключить функцию:

unset TMOUT

Обратите внимание, что ваш системный администратор может установить это по соображениям безопасности. Поэтому, если вы не являетесь системным администратором, вы можете проверить это, прежде чем что-то менять самостоятельно.


48

Включите поддержку активности SSH , изменив следующую настройку на положительное значение:

Страница подключения диалога настройки PuTTY

Значение 300 должно быть достаточно в большинстве случаев. (5 минут.) Это приводит к тому, что PuTTY периодически отправляет пустые пакеты SSH на удаленный хост, чтобы время сеанса не истекло.

Обратите внимание, что мы не хотим SO_KEEPALIVEопцию ниже на этой странице. Это механизм более низкого уровня, который лучше всего использовать только тогда, когда протокол уровня приложения не имеет своего собственного механизма поддержки активности. SSH делает, поэтому мы не должны использовать TCP keepalive в этом случае.

Есть и другие вещи, которые могут привести к разрыву соединений, но это первое, что нужно попробовать. Если это не сработает, вам нужно изучить следующие вещи: тайм-ауты VPN, тайм-ауты маршрутизатора, изменения настроек на удаленном SSH-сервере, нестабильные соединения и т. Д.


3
В качестве альтернативы запустите что-то, что производит непрерывный вывод, например, topкогда вас нет.
LawrenceC

1
@ultrasawblade: это исправление клейкой ленты; он просто лечит симптом, но не решает истинную проблему.
Кевин М

Этот конфиг применяется для Windows CLI? Я имею в виду, что вместо сохранения сеансов я создаю ссылки на putty.exe, передавая в качестве аргументов учетные данные для входа в систему (хост putty.exe -l root -pw пароль). Если нет, есть ли аргумент для применения этой опции через CLI?
Mc Kernel

3
Это отличное решение, особенно когда вы работаете с нестабильным соединением, и вам не нужно вносить ни одного изменения в сервер (в отличие от принятого решения).
итопопус

Кто-нибудь знает, как это указать через строку cmd?
Янак Мина

8

В дополнение к другим ответам, я бы предложил запустить, screenчтобы иметь возможность управлять сеансом, даже если замазка завершается (обрыв соединения, сбой vpn и т. Д.).


6

Отметьте следующую опцию в PuTTY:

введите описание изображения здесь


К сожалению, SO_KEEPALIVE, похоже, отправляется только каждые пару часов (по крайней мере, по умолчанию), поэтому лучшим названием для них будет «проверить, не умер ли» LOL
rogerdpack

3

Просто запустите это на вашей замазке, чтобы убедиться, чтобы активировать сеанс каждые 10 минут.

 while true; do date; sleep 600; done

Я всегда запускаю это на своем сервере, и это не работает.
Cokedude

1

Если ничего из вышеперечисленного не помогло,
вы должны изменить системные sshd-конфигурации!
ЗАМЕТЬТЕ, ЧТО ВАМ НУЖНО РАЗРЕШИТЬ КОРНЕВЫЕ РАЗРЕШЕНИЯ!

Отредактируйте ваш sshd_config файл, в моем случае он был расположен/etc/ssh/sshd_config

Содержание было:

ClientAliveInterval 300  
ClientAliveCountMax 0

изменить на:

ClientAliveInterval 6000  
ClientAliveCountMax 3

Не забывай

service sshd restart


0

В Connection>SSHменю замазки используйте следующее значение как Remote command: bash --rcfile <(echo 'source ~/.bash_profile; unset TMOUT').

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.