Saltar al contenido principal

Una publicación etiquetados con "Ssh"

Contenido relacionado con Ssh.

Ver Todas las Etiquetas

Postmortem #002 · Cuando el puerto 22 estaba abierto pero SSH no funcionaba

· 18 min de lectura
Nuria Liaño
Fundadora y profe de sistema, redes y programación

El 16 de octubre de 2026 intentamos conectarnos por SSH a uno de nuestros servidores de producción y recibimos un error bastante poco tranquilizador:

kex_exchange_identification: read: Connection reset
Connection reset by <servidor> port 22

La primera impresión podía ser que el servidor estaba caído, que el firewall estaba bloqueando el acceso o que el servicio SSH había dejado de escuchar.

Pero ninguna de esas explicaciones encajaba del todo.

Las webs alojadas en el servidor seguían respondiendo correctamente.

El puerto 22 aparecía abierto.

Desde otro servidor de nuestra infraestructura también era posible establecer la conexión TCP al puerto SSH.

Y, aun así, ninguna sesión SSH conseguía llegar siquiera al intercambio inicial de claves.

La causa terminó siendo una combinación bastante peculiar:

  • un proceso sshd antiguo había quedado vivo fuera del estado normal gestionado por systemd;
  • ese proceso seguía ocupando el puerto 22;
  • durante una operación automática de mantenimiento, ssh.service se detuvo;
  • ssh.socket no pudo recuperar el puerto porque seguía ocupado;
  • systemd eliminó /run/sshd, un directorio temporal ligado al ciclo de vida del servicio;
  • el listener antiguo siguió aceptando conexiones TCP, pero no podía completar nuevas sesiones SSH.

El resultado era engañoso:

servidor                  ✅
webs ✅
red ✅
puerto 22 ✅
SSH ❌

Y precisamente esa contradicción hizo interesante el incidente.

Nota de seguridad

Algunos nombres, direcciones IP, dominios y detalles concretos de la infraestructura han sido anonimizados o simplificados.

La secuencia técnica y la causa del incidente se mantienen fieles al caso real.