Connection closed by remote host

A veces las cosas pasan porque tienen que pasar y no hay vuelta de hoja. Si a un administrador de sistemas le cortamos el acceso ssh a un servidor remoto (tanto virtual como físicamente) es como si inutilizáramos el brazo ejecutor que le otorga el poder que buenamente tiene.

Esto a veces pasa de forma consciente y otras -las peores- sin el menor indicio. Intentando esto último obtengo un mensaje tal que así:
# ssh -vvv user@host
OpenSSH_4.3.1p1, SSH protocols 1.5/2.0, OpenSSL ...
debug1: Reading configuration data /usr/local/etc/ssh_config
debug1: Connecting to host [192.168.1.143] port 22.
debug1: Connection established.
debug1: identity file /export/home/user/.ssh/identity type -1
debug1: identity file /export/home/user/.ssh/id_rsa type -1
debug1: identity file /export/home/user/.ssh/id_dsa type -1
ssh_exchange_identification: Connection closed by remote host
#
Y te tira fuera, sin más explicación que un ssh_exchange_identification. Lo lógico sería preguntar a Google sobre el escupitajo, pero todas las respuestas habidas y por haber centran el problema en unos tcp wrappers que no uso.

Mi humilde teoría sobre lo ocurrido se basa en los timeouts de las conexiones (hay quien piensa como yo). Habitualmente (y más en algún que otro datacenter que no mencionaré) los firewalls están configurados para cortar una conexión activa siempre que el flujo de información no varíe en un tiempo dado, pongamos 5 minutos.

¿Qué pasa a los 5 minutos?, el firewall corta la conexión y el servidor se queda con las ganas. Intuyo que la conexión se viste de luto con una etiqueta defunct hasta que el administrador la mata definitivamente. ¿Y si el bueno del administrador no tiene acceso ssh para matar las tropecientas conexiones difuntas que pueda haber en el servidor?... Houston, we've a problem.

Menos mal que el trato desde Houston ha sido mejor de lo esperado, con recomendación incluida:
# echo ClientAliveInterval 300 >> /etc/ssh/sshd_config
Supuestamente cada 300 segundos el servidor se encarga de enviar un "Estoy vivo, no me mates" para que quien quiera que escuche esas alarmas no se convierta en un homicida. Y digo supuestamente porque no estoy muy seguro de que funcione. Ya se verá.
sysadmin freebsd

About the author

Óscar
has doubledaddy super powers, father of Hugo and Nico, husband of Marta, *nix user, Djangonaut and open source passionate.