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

34

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

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

CND
источник

Ответы:

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 и т. Д.).

Arcege
источник
6

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

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

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

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

 while true; do date; sleep 600; done
KKN
источник
Я всегда запускаю это на своем сервере, и это не работает.
Cokedude
1

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

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

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

ClientAliveInterval 300  
ClientAliveCountMax 0

изменить на:

ClientAliveInterval 6000  
ClientAliveCountMax 3

Не забывай

service sshd restart
привет-Зира
источник
1

Вы можете использовать topкоманду в командной строке. Это поддержит вашу сессию.

Пиюш Агравал
источник
Это скорее обходной путь, чем решение.
Кусалананда
@Kusalananda Я думаю, что обходные пути могут быть также решениями.
Петер говорит восстановить Монику
0

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

psychoslave
источник