Watch at EaseHistorias. Respuestas. Perspectiva.

Tecnología · GUÍA PRÁCTICA

¿SSH dice “kex_exchange_identification: Connection closed”? Correlaciona primero el límite previo a la autenticación

El mensaje aparece antes de un fallo normal de inicio de sesión. Fija la ruta efectiva, conserva el punto donde se detuvo el cliente y alinea los registros del borde y sshd antes de cambiar nada.

¿SSH dice “kex_exchange_identification: Connection closed”? Correlaciona primero el límite previo a la autenticación
Ilustración original: Busca la identificación del servidor y el primer mensaje de intercambio. Si no hay banner SSH, revisa listener y ruta antes que claves de usuario. Watch at Ease

kex_exchange_identification: Connection closed by remote host no demuestra que la clave privada sea incorrecta. TCP llegó a algún par, pero la conexión terminó cerca de la identificación SSH o del intercambio inicial, antes del diagnóstico normal de autenticación.

Construye una línea temporal con tres puntos: cliente, entrada de red y daemon SSH. El mismo mensaje puede venir de un puerto erróneo, proxy o firewall, límites de sshd, penalización por origen o rechazo explícito.

Fija el destino efectivo y una hora de fallo

Registra host, dirección resuelta, puerto, origen, ProxyJump/ProxyCommand, VPN y proceso llamador; guarda una hora UTC y el ssh -vvv completo.

No supongas que un nombre conocido llegó al sshd esperado. Balanceador, NAT, puerto de panel, salto o DNS antiguo pueden aceptar TCP y cerrar antes de autenticar.

Marca el último límite de protocolo alcanzado

Busca la identificación del servidor y el primer mensaje de intercambio. Si no hay banner SSH, revisa listener y ruta antes que claves de usuario.

RFC 4253 exige identificaciones después de conectar. Un cierre aquí es transporte o preautenticación, no prueba de rechazo de authorized_keys.

Correlaciona la decisión del borde y el registro de sshd

Con la misma hora lee firewall, NAT, balanceador, proxy, seguridad del host y journal de sshd; confirma qué backend recibió el socket.

Lee valores efectivos de sshd, incluidos Match para ese origen. Prefiere registro temporal dirigido a debug global indefinido y protege datos de usuarios.

Clasifica el cierre antes de cambiar límites o claves

Separa destino erróneo, ausencia de listener, MaxStartups, límite por origen, penalización, RefuseConnection, LoginGraceTime y políticas externas. La evidencia elige la rama.

No subas MaxStartups solo porque aparece en un foro. Puede aumentar carga sin corregir una ruta errónea, tráfico abusivo o política por origen.

Aplica un cambio mínimo y demuestra avance

Corrige solo lo probado: ruta, proxy/backend, Match preciso, excepción autorizada del monitor o capacidad demostrada.

Reintenta una vez desde un origen conocido. Verifica identificación correcta, el mismo intento en sshd y llegada a la autenticación prevista; luego ejecuta una orden real sin desactivar protecciones globales.

¿SSH dice “kex_exchange_identification: Connection closed”? Correlaciona primero el límite previo a la autenticación
Ilustración original: Con la misma hora lee firewall, NAT, balanceador, proxy, seguridad del host y journal de sshd; confirma qué backend recibió el socket. Watch at Ease