На сервере Linux как найти список всех текущих SSH-соединений или отключить конкретное SSH-соединение?
На сервере Linux как найти список всех текущих SSH-соединений или отключить конкретное SSH-соединение?
Ответы:
Если вы планируете сделать это в интерактивном режиме, проще всего будет просто вызвать who
и посмотреть, есть ли пользователи с удаленного хоста.
[you@host]$ who
user1 :0 Feb 8 09:45
user1 pts/1 Feb 14 17:56 (:0.0)
malcolm pts/3 Feb 15 17:50 (cockpit.serenity.com)
reynold pts/2 Feb 15 17:48 (host123.firefly.co.uk)
Это, конечно, не надежно, но чрезвычайно просто печатать по требованию и легко обрабатывать человеческим глазом.
Как указывало @gravyface, если вы включите -u
опцию, who
вы также распечатаете соответствующий PID, который вы можете затем передать, kill
чтобы разорвать соединение.
-u
даст вам PID.
who -u
. Убийство pid не разорвало соединение на моей удаленной машине. Однако после того, как я сделал lsof -i | grep ":ssh"
предложение в ответ @kce, я получил другой pid; убийство этого процесса разорвало соединение. Возможно, есть несколько процессов, которые запускаются из-за ssh-соединения и убивают тот, который отображается тем, кто не прерывает соединение; это мое объяснение.
Как насчет использования lsof?
# lsof -i |grep ":ssh"
sshd 1943 root 3u IPv6 5698 TCP *:ssh (LISTEN)
sshd 1943 root 4u IPv4 5700 TCP *:ssh (LISTEN)
sshd 3217 root 3r IPv4 9687 TCP www.example.com:ssh->192.168.61.11:7341 (ESTABLISHED)
sshd 3220 user1 3u IPv4 9687 TCP www.example.com:ssh->192.168.61.11:7341 (ESTABLISHED)
sshd 3327 root 3r IPv4 10595 TCP www.example.com:ssh->192.168.61.11:7385 (ESTABLISHED)
sshd 3330 user2 3u IPv4 10595 TCP www.example.com:ssh->192.168.61.11:7385 (ESTABLISHED)
После этого вы сможете уничтожить нарушающее соединение (например, отключить user2):
# kill -9 3330
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
указан идентификатор процесса во втором столбце), если у вас есть права суперпользователя или речь идет о пользователе.