Gestione delle connessioni SSH


9

Su un server Linux, come posso trovare un elenco di tutte le connessioni SSH correnti o disconnettere una connessione SSH specifica?


Sei interessato a connessioni SSH in entrata o in uscita? o entrambi?
Shawn Chin,

2
Questa domanda è più rilevante per il superutente

Sono interessato solo alle connessioni in entrata.
Cerin,

Risposte:


13

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.


1
-uti darà il PID.
Gravyface,

questo non mostra gli IP se ci sono più connessioni su un utente
Qualcuno

Per qualche motivo, questo non ha funzionato. Da una macchina remota, ho effettuato l'accesso alla mia macchina usando ssh e nella mia macchina ho eseguito a 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.
Neo M Hacker,

8

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

3
Usa lsof -i tcp:22e non avrai bisogno del grep.
Shawn Chin,

Solo se si esegue il sshe non si specifica l' -popzione ..
Jindra Helcl

1

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.


Non ho connessioni attive sulla mia macchina attuale, ma netstat elenca ancora una connessione tcp e tcp6. Cosa farei con il PID di sshd? Stai insinuando che dovrei uccidere l'intero server SSH solo per interrompere una singola connessione?
Cerin

@Cerin Queste due connessioni mostrano che è in ascolto su quelle porte (solo)

Non hai specificato, ma ci ho pensato. Ci dispiace: /
Tratta bene le tue mod.

0

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.


Questo mostra solo che sshd è in esecuzione e l'utente con cui è stata stabilita la connessione (non il numero di connessioni, da quale IP proviene)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.