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 whoe 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 -uun'opzione whoverrà anche stampato il PID associato a cui è possibile passare killper terminare una connessione.
-uti 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:22e non avrai bisogno del grep.
sshe non si specifica l' -popzione ..
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 bashsessione (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'è PIDl'ID processo nella seconda colonna), se si dispone dei privilegi di root o l'utente in questione.