Jak mogę znaleźć na serwerze z systemem Linux listę wszystkich bieżących połączeń SSH lub rozłączyć określone połączenie SSH?
Jak mogę znaleźć na serwerze z systemem Linux listę wszystkich bieżących połączeń SSH lub rozłączyć określone połączenie SSH?
Odpowiedzi:
Jeśli planujesz to zrobić interaktywnie, najprostszym byłoby po prostu wywołanie who
i sprawdzenie, czy są użytkownicy ze zdalnego hosta.
[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)
Nie jest to oczywiście niezawodne, ale niezwykle łatwe do wpisania na żądanie i łatwe do przetworzenia ludzkim okiem.
Jak wskazał @gravyface, jeśli podasz -u
opcję who
, wydrukuje również powiązany PID, który możesz przekazać, kill
aby zakończyć połączenie.
-u
da ci PID.
who -u
. Zabicie pid nie zakończyło połączenia na moim zdalnym komputerze. Jednak po tym, jak zrobiłem lsof -i | grep ":ssh"
sugestię w odpowiedzi @kce, otrzymałem inny pid; zabicie tego procesu zakończyło połączenie. Może istnieje wiele procesów, które są uruchamiane z powodu połączenia ssh i zabicia tego wyświetlanego przez osobę, która nie przerywa połączenia; to moje wyjaśnienie.
Co powiesz na używanie 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)
Powinieneś być w stanie zabić naruszające połączenie (np. Rozłączyć użytkownika2):
# kill -9 3330
lsof -i tcp:22
i nie będziesz potrzebował grep.
ssh
i nie określisz -p
opcji.
Aby wyświetlić połączenia ssh, możesz zrobić netstat -atn | grep ':22'
. Pokazuje wszystkie połączenia na porcie 22.
Aby porzucić połączenie, możesz spróbować znaleźć PID sshd (Demon SSH) za pomocą ps-ax
.
Edycja: Myślę, że możesz znaleźć PID ich bash
sesji (lub równoważnej powłoki). Zabicie, które powinno ich w porządku.
Kolejny zasób: ten wątek zawiera kilka wskazówek na ten temat.
Spróbuj tego:
$ ps aux | grep sshd
Aby je rozłączyć, możesz kill PID
(gdzie PID
jest identyfikator procesu w drugiej kolumnie), jeśli masz uprawnienia roota lub jesteś pytanym użytkownikiem.