LINUX.ORG.RU

висящие ssh сессии при не корректном завершении

 ,


0

1

Всем привет! Очень досаждает проблема висящих ssh сессий на псевдотерминалах при не верном завершении сессий (например, интернет пропал).

Когда создаю, новую сессию, то вижу залогиненых пользователей

─[observer@polet] - [~] - [1851]
└─[$] w                                                              [12:09:31]
 12:09:32 up 23:08,  3 users,  load average: 0,00, 0,00, 0,00
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
observer pts/0     12:09    1.00s  0.15s  0.00s w
observer pts/1     Пт19   13:20m  1.18s  0.78s tmux
observer pts/2     Пт19   16:57m  0.80s  0.39s vim /var/tmp/sshd_config.XXGGPU

Все нагугленные мной решения сводятся к параметрам в sshd_config

ClientAliveInterval 20
ClientAliveCountMax 3

который я установил в 20 и 3. Я понял, что раз в 20 секунд проверяется состояние и если 3 раза зафелилась, то штатно завершиться должна. Однако, зомби сессии так и продолжают висеть.

Прошу коллективный разум о помощи. Как заставить ssh завершать зомби сессии?

★★★

Последнее исправление: SpaceRanger (всего исправлений: 1)
Ответ на: комментарий от t184256

я бы с удовольствием, но ряд причин не позволяет этого сделать. Поэтому надо победить эту напасть в openssh.

не могу поверить, что openssh не предусматривает такого, солидный проект же и всё такое

SpaceRanger ★★★
() автор топика

Однако, зомби сессии так и продолжают висеть.

sshd перезапустили? Старые сессии держат старый конфиг sshd в памяти, их придётся прибить вручную. Новые сессии должны закрываться сами.

anonymous
()

Выяснил одну деталь. Сессии не убиваются, если запущен tmux. Если его не запускать и аварийно завершить соединение, то тогда всё в порядке. Если к висящей tmux сессии подключиться и кореектно её завершить, то и висящее ssh убивается. Как tmux автоматом прибивать?

SpaceRanger ★★★
() автор топика
Последнее исправление: SpaceRanger (всего исправлений: 1)
Ответ на: комментарий от SpaceRanger

Попробуйте в /etc/systemd/logind.conf поставить KillUserProcesses=yes.

man logind.conf:

Note that setting KillUserProcesses=yes will break tools like screen(1) and tmux(1), unless they are moved out of the session scope. See example in systemd-run(1).

anonymous
()

kill -o -u observer sshd убивает самую старую сессию. Дальше можешь автоматизировать как хочешь, хоть скрипт по крону.

anonymous
()

может используется что-то другое еще кроме ssh? Например FUSE, sshfs

anonymous
()
Ответ на: комментарий от Anoxemian

интересно..я думал, что tmux для разделения экрана на терминалы. Ну чтоб как хакир тип, как в матрице. Серьёзно так думал. Выходит, он беспокоится о сохранности данных на случай внезапного дисконнекта?

SpaceRanger ★★★
() автор топика
Ответ на: комментарий от SpaceRanger

Ага, а вима — бибикать и портить текст.

Нет, tmux знать не ведает про какие-то данные, он мультиплексирует терминал. То, что это обеспечивает возможность реконнекта без убийства запущенных в нем процессов — следствие, не цель.

t184256 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.