Su un server Linux, come posso trovare un elenco di tutte le connessioni SSH correnti o disconnettere una connessione SSH specifica?
Su un server Linux, come posso trovare un elenco di tutte le connessioni SSH correnti o disconnettere una connessione SSH specifica?
Risposte:
Se hai intenzione di farlo in modo interattivo, il più semplice sarebbe semplicemente invocare who
e vedere se ci sono utenti da un host remoto.
[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)
Questo ovviamente non è infallibile, ma è estremamente semplice da digitare su richiesta e facilmente elaborabile con l'occhio umano.
Come sottolineato da @gravyface, se si include -u
un'opzione who
verrà anche stampato il PID associato a cui è possibile passare kill
per terminare una connessione.
-u
ti darà il PID.
who -u
. Uccidere il pid non ha interrotto la connessione sul mio computer remoto. Tuttavia, dopo che ho fatto un lsof -i | grep ":ssh"
suggerimento nella risposta di @kce, ho ottenuto un pid diverso; l'uccisione di quel processo ha interrotto la connessione. Forse ci sono più processi che vengono avviati a causa di una connessione ssh e uccidendo quello visualizzato da chi non termina la connessione; questa è la mia spiegazione.
Che ne dici di usare 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)
Dovresti quindi essere in grado di interrompere la connessione offensiva (ad esempio, per disconnettere user2):
# kill -9 3330
lsof -i tcp:22
e non avrai bisogno del grep.
ssh
e non si specifica l' -p
opzione ..
Per visualizzare le connessioni ssh puoi fare un netstat -atn | grep ':22'
. Mostra tutte le connessioni sulla porta 22.
Per interrompere la connessione, puoi provare a trovare il PID di sshd (SSH Daemon) con ps-ax
.
Modifica: penso che tu possa trovare il PID della loro bash
sessione (o shell equivalente). Uccidere ciò dovrebbe farli cadere bene.
Un'altra risorsa: questa discussione ha alcuni suggerimenti sull'argomento.
Prova questo:
$ ps aux | grep sshd
Per disconnetterli è possibile kill PID
(dov'è PID
l'ID processo nella seconda colonna), se si dispone dei privilegi di root o l'utente in questione.