Con paciencia. Esta vez no te va ser necesaria demasiada… tenemos a nuestra diposición unos sencillos comandos que dan interesante información al respecto sin necesidad de concatenar demasiados pipes u opciones.
En los ejemplos que voy a mencionar, como nota aclaratoria comentar: la IP 192.168.2.100 es la del servidor Linux (en concreto, un Debian) y la 192.168.2.101 sería mi desktop desde donde conecto por SSH al servidor.
Por una parte podemos utilizar lsof
, que viene a ser List Open Files. En Linux los sockets de conexión no dejan de ser ficheros abiertos:
# Listar ficheros abiertos con lsof (list open files) lsof -i -n | egrep '\<sshd\>' | grep ESTABLISHED -------------------------------------------------------------------------------------------------------------------------- sshd 2425 root 3u IPv4 21063 0t0 TCP 192.168.2.100:ssh->192.168.2.101:52712 (ESTABLISHED) sshd 2427 bob 3u IPv4 21063 0t0 TCP 192.168.2.100:ssh->192.168.2.101:52712 (ESTABLISHED)
Las líneas ESTABLISHED
nos muestran las conexiones SSH abiertas así como la máquina desde la que está activa la conexión.
Otras herramientas como ps
o who
nos pueden dar valiosa información, aunque un poco menos precisa que lsof
.
# Comprobar procesos con ps ps -ef | grep -w "sshd:" -------------------------------------------------------------------------------------------------------------------------- root 2425 471 0 12:41 ? 00:00:00 sshd: bob [priv] bob 2427 2425 0 12:41 ? 00:00:00 sshd: bob@pts/1 bob 2896 2428 0 14:04 pts/1 00:00:00 grep -w sshd: # who who -------------------------------------------------------------------------------------------------------------------------- bob :0 2015-06-11 10:50 (:0) bob pts/0 2015-06-11 10:50 (:0) bob pts/1 2015-06-11 12:41 (192.168.2.101)
Y ahora vienen dos programas que vienen al dedo: finger
y pinky
. El segundo es un versión ligera del primero. Ambos nos permiten obtener información relativa a usuarios incluyendo momento de conexión, equipo remoto desde el que están conectados… para muestra vamos a ver unos ejemplos:
# Información de usuarios conectados con finger finger -------------------------------------------------------------------------------------------------------------------------- Login Name Tty Idle Login Time Office Office Phone bob bob *:0 Jun 11 10:50 (:0) bob bob *pts/0 49 Jun 11 10:50 (:0) bob bob *pts/1 Jun 11 12:41 (192.168.2.101) # pinky, la versión light de finger # La utilidad pertenece al paquete coreutils, por si no lo tienes instalado (cosa rara ya que suele estarlo) pinky -------------------------------------------------------------------------------------------------------------------------- Login Name TTY Idle When Where bob bob ?:0 ????? 2015-06-11 10:50 :0 bob bob *pts/0 00:49 2015-06-11 10:50 :0 bob bob *pts/1 2015-06-11 12:41 192.168.2.101
Por otro lado tenemos unos cuantos comandos de red que pueden ser muy útiles para depurar y ver quién está conectado a nuestra máquina:
# netstat para ver las conexiones de red de nuestra máquina netstat -ap | grep 'ESTABLISHED.*ssh' -------------------------------------------------------------------------------------------------------------------------- Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 64 debianwithgnome:ssh 192.168.2.101:52712 ESTABLISHED 2425/sshd: bob # nethogs: ver ancho de banda consumido por cada proceso # puedes instalarlo con el paquete que lleva el mismo nombre nethogs eth0 # estadísticas por socket de conexión con ss (sockets statistics) ss | grep ssh -------------------------------------------------------------------------------------------------------------------------- Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB 0 64 192.168.2.100:ssh 192.168.2.101:52712
Habrá más maneras, pero estas desde luego son bastante fáciles de añadir a la navaja suiza del día a día de la administración del sistema.