Guía de tecnologías

Cómo encontrar conexiones SSH activas en Linux

5 min read Linux Actualizado 10 Oct 2025
Cómo encontrar conexiones SSH activas en Linux
Cómo encontrar conexiones SSH activas en Linux

Terminal Linux mostrando conexiones SSH activas

Objetivo y contexto

Si administras servidores Linux, con frecuencia necesitarás saber quién está conectado por SSH y desde qué IP. Este artículo explica métodos prácticos para listar conexiones activas, interpretar los resultados y actuar en consecuencia.

Prerrequisitos

  • Un servidor con Linux.
  • Acceso de root o privilegios con sudo.
  • Conocimiento básico de la terminal.

Important: Algunos comandos requieren utilidades instaladas (netstat viene con net-tools; ss con iproute2). Si faltan, se indica alternativa.

Modelo mental rápido

Piensa en tres fuentes de verdad:

  • Registros y archivos de sesión (who, last, /var/log/auth.log).
  • Tabla de procesos (ps muestra procesos sshd y PIDs).
  • Tabla de sockets (ss, netstat, lsof muestran conexiones TCP establecidas).

Comandos esenciales y ejemplos

A continuación están los comandos más usados, con salidas de ejemplo y qué interpretar.

1) who — quién está conectado ahora

who muestra usuarios con sesión en el sistema y, cuando procede, la IP origen.

Ejecuta:

who

Ejemplo de salida:

root     pts/0        2020-05-01 02:37 (27.61.161.61)
root     pts/1        2020-05-01 02:39 (45.58.38.21)

Interpretación: indica dos sesiones activas desde 27.61.161.61 y 45.58.38.21.

2) w — información más detallada

w añade tiempos de inactividad, procesos en ejecución y carga del sistema.

w

Salida de ejemplo:

 02:40:07 up 1 day, 18:35,  2 users,  load average: 0.02, 0.02, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    27.61.161.61     02:37    1.00s  0.04s  0.01s ssh [email protected]
root     pts/1    45.58.38.21      02:39    1.00s  0.02s  0.00s w

Qué aporta: identifica qué comando está ejecutando cada sesión y la IP de origen.

3) ps — procesos sshd y sus PIDs

ps muestra procesos relacionados con sshd; útil para obtener PIDs y mapear a sesiones.

ps auxwww | grep sshd: | grep -v grep

Salida de ejemplo:

root         609  0.0  0.1  12160  7268 ?        Ss   Apr29   0:01 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root       35532  0.0  0.2  13864  8796 ?        Ss   02:37   0:00 sshd: root@pts/0
root       35669  0.0  0.2  13860  8916 ?        Ss   02:38   0:00 sshd: root@pts/1

Cómo usarlo: con el PID puedes investigar más (por ejemplo, lsof -p PID o grep en los registros).

4) netstat — conexiones TCP establecidas (si está instalado)

netstat muestra sockets TCP y programas asociados.

netstat -tnpa | grep 'ESTABLISHED.*sshd'

Salida de ejemplo:

tcp        0     88 45.58.38.21:22          27.61.161.61:8363       ESTABLISHED 35532/sshd: root@pt 
tcp        0      0 45.58.38.21:22          45.58.38.21:51166       ESTABLISHED 35669/sshd: root@pt 

Nota: netstat pertenece a net-tools; en muchas distribuciones modernas se prefiere ss.

5) last — sesiones registradas y las que siguen activas

last lee /var/log/wtmp y muestra sesiones previas y presentes.

last -a | grep -i still

Salida de ejemplo:

root     pts/1        Fri May  1 02:39   still logged in    45.58.38.21
root     pts/0        Fri May  1 02:37   still logged in    27.61.161.61
reboot   system boot  Wed Apr 29 08:04   still running      5.4.0-26-generic

Útil para auditoría histórica y ver sesiones que continúan abiertas.

6) ss — herramienta moderna para sockets

ss es la alternativa moderna a netstat; suele ofrecer más información y es más rápida.

ss | grep -i ssh

Salida de ejemplo:

tcp   ESTAB  0      0                      45.58.38.21:51166        45.58.38.21:ssh                                                                             
tcp   ESTAB  0      56                     45.58.38.21:ssh         27.61.161.61:8363                                                                            
tcp   ESTAB  0      0                      45.58.38.21:ssh          45.58.38.21:51166                                                                           

Interpretación: muestra sockets ESTABLISHED y los extremos local/remoto.

Métodos alternativos

  • lsof: listar sockets abiertos por proceso. Ejemplo: lsof -i :22 -nP
  • journalctl: ver entradas de sshd en systemd: journalctl -u ssh -e
  • auditd: para auditoría avanzada de eventos de login.

Cuando estos métodos pueden fallar o dar información incompleta

  • Conexiones proxied (ProxyJump, bastiones) pueden mostrar la IP del salto intermedio, no la IP final del cliente.
  • Sesiones con multiplexación (ControlMaster) podrían reutilizar conexiones sin nuevas entradas en who/last.
  • Algunas imágenes ligeras o contenedores pueden no incluir netstat/ss/lsof; instala paquetes necesarios o usa /proc/net/tcp.

Checklist rápido para administradores (Role-based)

Para el administrador del sistema:

  • Ejecutar ss o netstat para confirmar sockets ESTABLISHED.
  • Ejecutar ps para mapear PIDs de sshd a usuarios.
  • Revisar last y who para historial y sesiones activas.
  • Comprobar /var/log/auth.log o /var/log/secure según distro.

Para el equipo de seguridad:

  • Correlacionar IP con listas negras o amenazas conocidas.
  • Comprobar si el usuario usa autenticación por clave o contraseña.
  • Revisar cambios inusuales de hora de login o comandos ejecutados.

Mini-cheat sheet (comandos rápidos)

  • who
  • w
  • ps auxwww | grep sshd
  • ss -tnp | grep sshd
  • netstat -tnpa | grep ‘ESTABLISHED.*sshd’
  • last -a | grep -i still
  • lsof -i :22 -nP
  • journalctl -u ssh -e

Recomendaciones de seguridad y privacidad

  • Preferir autenticación por clave y deshabilitar root login por contraseña (PermitRootLogin no en sshd_config).
  • Implementar Fail2Ban o bloqueos por IP para mitigar intentos de fuerza bruta.
  • Mantener registros de acceso en /var/log/auth.log o /var/log/secure y rotarlos con logrotate.
  • Consideraciones GDPR/Privacidad: las direcciones IP son datos personales en algunos marcos legales; documenta retención y acceso a logs.

Important: cuando bloquees una IP, valida que no sea una IP legítima (por ejemplo, de una VPN corporativa).

Ejemplo de metodología para investigar una conexión sospechosa

  1. Identificar sesión: ss | grep o netstat -tnpa.
  2. Obtener PID: ps aux | grep .
  3. Auditar comandos: revisar shell history del usuario si es posible (~/.bash_history) y /var/log/auth.log.
  4. Si procede, desconectar: pkill -t pts/X o kill PID.
  5. Documentar la acción y bloquear IP si es maliciosa.

Glosario rápido (una línea)

  • sshd: demonio del servidor OpenSSH que acepta conexiones SSH.
  • PID: identificador de proceso en Linux.
  • ESTABLISHED: estado TCP que indica conexión activa.

Conclusión

Verificar conexiones SSH activas implica mirar registros de sesión (who, last), procesos (ps) y sockets de red (ss/netstat/lsof). Cada fuente ofrece una perspectiva distinta; úsalas conjuntamente para auditar y actuar. Mantén prácticas de seguridad (clave pública, Fail2Ban, registros) y documenta cualquier bloqueo o desconexión.

Resumen final:

  • who/w/last muestran usuarios y sesiones.
  • ps identifica procesos sshd y PIDs.
  • ss/netstat/lsof muestran sockets y puertos.
  • Revisa logs y aplica reglas de seguridad antes de bloquear.

Notas: adapta comandos a tu distribución (por ejemplo, /var/log/auth.log en Debian/Ubuntu y /var/log/secure en CentOS/RHEL).

Autor
Edición

Materiales similares

Cómo descargar películas y series de Netflix
Streaming

Cómo descargar películas y series de Netflix

Preparar /dev/sda y GRUB para RAID1 en CentOS
Linux

Preparar /dev/sda y GRUB para RAID1 en CentOS

Ver el recuento de "No me gusta" en YouTube — guía paso a paso
Guía técnica

Ver el recuento de "No me gusta" en YouTube — guía paso a paso

Filtra tus RSS con Feed Rinse
Productividad

Filtra tus RSS con Feed Rinse

Smartphones hackean coches japoneses
Ciberseguridad

Smartphones hackean coches japoneses

Cambiar fondo de inicio de sesión en Mac
macOS

Cambiar fondo de inicio de sesión en Mac