Як зробити шпаклівку, щоб не перервати сеанс через деякий час?


34

Щоразу 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-програвачі в цьому випадку.

Є й інші речі, які можуть спричинити падіння зв’язків, але це суцільне перше, що потрібно спробувати. Якщо це не працює, вам потрібно буде вивчити інші речі: таймаут VPN, тайм-аути маршрутизатора, зміни налаштувань на віддаленому сервері SSH, невмілі з'єднання тощо.


3
Крім того, запустіть те, що дає безперервний вихід, наприклад, topколи ви знаходитесь вдома.
LawrenceC

1
@ultrasawblade: це виправлення клейкої стрічки; він просто лікує симптом, але не вирішує справжню проблему.
Кевін М

Чи застосовується ця конфігурація для Windows CLI? Я маю на увазі, замість збереження сесій я створюю посилання на putty.exe, передаючи облікові дані для входу як аргументи (putty.exe хост -l root -pw пароль), якщо ні, чи є аргумент, щоб застосувати цю опцію через CLI?
Мак Кернель

3
Це відмінне рішення, особливо коли ви працюєте на нестабільному з'єднанні, і вам не потрібно вносити жодної зміни на сервер (на відміну від прийнятого рішення).
іктоктоп

Хтось знає, як вказати це через cmd-рядок?
Janac Meena

8

На додаток до інших відповідей, я б запропонував запустити, screenщоб мати можливість керувати сеансом, навіть якщо шпаклівка припиняється (зникнення з’єднання, випадання vpn тощо).


6

Перевірте наступний варіант у PuTTY:

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


На жаль, здається, що SO_KEEPALIVE надсилається лише кожні пару годин (принаймні, за замовчуванням), тому кращою назвою для них буде "перевірити, чи мертвий" LOL
rogerdpack

3

Просто запустіть це на своїй шпаклівці, переконайтеся в цьому, щоб активувати сеанс кожні 10 хвилин.

 while true; do date; sleep 600; done

Я завжди запускаю це на своєму сервері, і це не працює.
кокеду

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.