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.