На сервере Linux как найти список всех текущих SSH-соединений или отключить конкретное SSH-соединение?
9
На сервере Linux как найти список всех текущих SSH-соединений или отключить конкретное SSH-соединение?
Ответы:
Если вы планируете сделать это в интерактивном режиме, проще всего будет просто вызвать
who
и посмотреть, есть ли пользователи с удаленного хоста.Это, конечно, не надежно, но чрезвычайно просто печатать по требованию и легко обрабатывать человеческим глазом.
Как указывало @gravyface, если вы включите
-u
опцию,who
вы также распечатаете соответствующий PID, который вы можете затем передать,kill
чтобы разорвать соединение.источник
-u
даст вам PID.who -u
. Убийство pid не разорвало соединение на моей удаленной машине. Однако после того, как я сделалlsof -i | grep ":ssh"
предложение в ответ @kce, я получил другой pid; убийство этого процесса разорвало соединение. Возможно, есть несколько процессов, которые запускаются из-за ssh-соединения и убивают тот, который отображается тем, кто не прерывает соединение; это мое объяснение.Как насчет использования lsof?
После этого вы сможете уничтожить нарушающее соединение (например, отключить user2):
источник
lsof -i tcp:22
и вам не понадобится grep.ssh
и не указываете-p
опцию ..Для просмотра соединений SSH вы можете сделать
netstat -atn | grep ':22'
. Он показывает все соединения на порту 22.Чтобы разорвать соединение, вы можете попробовать найти PID sshd (SSH Daemon) с помощью
ps-ax
.Изменить: я думаю, вы можете найти PID их
bash
сессии (или эквивалентную оболочку). Убийство, которое должно отбросить их.Другой ресурс: в этой теме есть несколько советов по этому вопросу.
источник
Попробуй это:
$ ps aux | grep sshd
Чтобы отключить их, вы можете
kill PID
(гдеPID
указан идентификатор процесса во втором столбце), если у вас есть права суперпользователя или речь идет о пользователе.источник