Watch at EaseHistorias. Respuestas. Perspectiva.

Technology · GUÍA PRÁCTICA

¿SSH agota el tiempo, rechaza o dice “No route to host”? Demuestra primero la tupla de destino

No rotes claves si TCP aún no alcanzó la autenticación. Fija hostname, dirección resuelta, familia, puerto y salto; conserva el primer error y la fase verbose; demuestra el primer tramo fallido y cambia un solo límite.

Diagrama de configuración efectiva, nombre, ruta, límite TCP y handshake SSH
Ilustración original: fija la tupla y el primer salto fallido antes de cambiar claves. Watch at Ease

No rotes claves si TCP aún no alcanzó la autenticación. Fija hostname, dirección resuelta, familia, puerto y salto; conserva el primer error y la fase verbose; demuestra el primer tramo fallido y cambia un solo límite.

ssh -G imprime la configuración del cliente después de evaluar Host y Match. ConnectTimeout cubre tanto la conexión TCP como el handshake SSH inicial y el intercambio de claves.

1. Fija la tupla efectiva de destino

Guarda el comando exacto y ejecuta ssh -G target para registrar hostname, usuario, puerto, familia, ProxyJump/ProxyCommand, archivos y overrides. Oculta credenciales y hosts privados al compartir, pero conserva el mapa interno.

No supongas que un alias implica puerto 22 o el nombre escrito. Match, Include, -p, IPv4/IPv6 y el salto cambian la tupla real. Si la automatización corre en un contenedor, runner o cuenta de servicio, captura ese entorno y no lo sustituyas por una prueba exitosa del portátil.

2. Conserva el primer fallo y la fase exacta

Ejecuta una vez ssh -vvv con límite y conserva la primera línea decisiva, duración y última fase completa. Separa DNS, ruta local, TCP refused, TCP timeout, banner/KEX timeout, host-key y autenticación.

refused demuestra una respuesta activa en la tupla, normalmente sin listener o con rechazo de política. timeout solo indica que no terminó a tiempo y no identifica por sí solo qué firewall, NAT, host o handshake calló. No route es ruta o alcance, no diagnóstico de clave.

3. Demuestra nombre, familia y ruta

Resuelve el hostname en el entorno que falla y lista IPv4/IPv6. Registra la dirección elegida por ssh -vvv, interfaz de origen y decisión de ruta. Usa -4/-6 como clasificadores controlados, no arreglos permanentes.

Con ProxyJump/ProxyCommand separa cliente→salto y salto→destino. Que funcione directo o desde el portátil no demuestra CI, VPN o subred cloud. Conserva diferencias de DNS dividido, NAT y hairpin.

4. Prueba el primer límite TCP desde el mismo origen

Desde la misma identidad de origen prueba solo destino y puerto autorizados con un sondeo TCP acotado. En el destino o canal aprobado verifica address/port de escucha, firewall, política cloud, NAT y logs recientes. No abras un puerto ampliamente solo para pasar.

Relaciona la prueba: refused pide listener/rechazo activo; timeout pide ruta de paquetes o silencio del handshake; no-route pide ruta local, vecino e ICMP devuelto. ping no es una puerta universal porque ICMP y TCP pueden tener políticas distintas.

5. Cambia un límite autorizado y acéptalo

Cambia solo alias/puerto, ruta, una regla firewall/NAT acotada, bind de sshd o salto. Conserva recuperación fuera de banda y valida la sintaxis del servidor antes de recargar.

Repite el mismo origen, hostname, familia, puerto y salto. La aceptación exige banner/KEX esperado, identidad host-key correcta y resultado de autenticación previsto; confirma también que orígenes no autorizados sigan bloqueados y revierte si aumenta la exposición.

Diagrama de evidencias SSH refused, timeout y no-route
Ilustración original: deja que la clase de error elija la siguiente prueba. Watch at Ease