На сервере 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
чтобы разорвать соединение.
Как насчет использования 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
Чтобы просмотреть ssh-соединения, вы можете сделать netstat -atn | grep ':22'
. Он показывает все подключения к порту 22.
Чтобы разорвать соединение, вы можете попробовать найти PID sshd (SSH Daemon) с помощью ps-ax
.
Изменить: я думаю, вы можете найти PID их bash
сеанс (или эквивалентная оболочка). Убийство должно их бросить.
Другой ресурс: эта тема есть несколько советов по этому поводу.
Попробуй это:
$ ps aux | grep sshd
Чтобы отключить их, вы могли kill PID
(где PID
- это идентификатор процесса во втором столбце), если у вас есть привилегии root или вы являетесь данным пользователем.