¿Qué está escuchando en cada puerto? ss -ltnp y compañía

El comando que más uso para entender un servidor Linux que no conozco (o que ya no recuerdo). Cómo leer su salida y dos trucos para Docker y Windows.

Iván· Publicado el · 2 minRead in English →

Cuando entro en un servidor y quiero saber qué hay corriendo, el primer comando que escribo es este:

sudo ss -ltnp
  • l → solo lo que está escuchando (listening).
  • t → conexiones TCP.
  • n → muestra números de puerto en vez de nombres («22» en vez de «ssh»).
  • p → qué proceso es el dueño de cada puerto (por eso el sudo).

Cómo leer la salida

Un trozo de lo que me sale en la Raspberry Pi:

0.0.0.0:22       users:(("sshd",pid=775,fd=3))
0.0.0.0:3000     users:(("docker-proxy",pid=1376405,fd=8))
0.0.0.0:8080     users:(("python",pid=3793306,fd=4))
127.0.0.1:8222   users:(("docker-proxy",pid=1397652,fd=8))
127.0.0.1:631    users:(("cupsd",pid=3913005,fd=7))

La columna importante es la de la dirección:

Dirección Quién puede conectarse
0.0.0.0:puerto o [::]:puerto Cualquiera que llegue a la máquina (toda la red de casa)
127.0.0.1:puerto Solo la propia máquina
100.x.x.x:puerto Solo por esa interfaz (por ejemplo, la de Tailscale)

Así de un vistazo compruebo, por ejemplo, que mi gestor de contraseñas (8222) solo escucha en local, como quiero.

Si pone docker-proxy

Cuando el proceso es docker-proxy, el puerto pertenece a un contenedor. Para saber a cuál:

docker ps --format '{{.Names}}\t{{.Ports}}'

Otros usos que me salvan

  • ¿Por qué no arranca mi servicio? Si dice «address already in use», busca quién tiene el puerto:

    sudo ss -ltnp | grep :8080
  • Conexiones activas (no solo las que escuchan): quita la l.

    ss -tnp
  • También UDP (DNS, WireGuard…): añade u.

    sudo ss -ltunp

En Windows

El equivalente en PowerShell:

Get-NetTCPConnection -State Listen | Sort-Object LocalPort |
  Select-Object LocalAddress, LocalPort, OwningProcess

O el clásico netstat -ano | findstr LISTENING, que da el número de proceso para buscarlo en el Administrador de tareas.

Por qué es tan útil

Porque la documentación y tus notas pueden estar desactualizadas, pero lo que escucha en cada puerto es la verdad. Es la forma más rápida de hacer inventario de un servidor, y de descubrir cosas que tienes abiertas sin saberlo.

Mini-quiz

¿Te has quedado con la idea?

Tres preguntas rápidas. Cada acierto suma 10 XP.

  1. En ss -ltnp, ¿qué significa la l?
  2. Si ves 127.0.0.1:8222, ¿quién puede conectarse a ese servicio?
  • #linux
  • #redes
  • #puertos
  • #comandos
  • #docker
Esc