Llevo ya un tiempo enredado con este problema. Casi siempre que accedo por ssh al server, se queda unos segundos (aprox. 20) colgado, esperando no sé qué, y ya después entra. Si salgo y entro de nuevo, es instantáneo. Pero si espero un buen rato y vuelvo a intentarlo, vuelve a tardar. Es bastante molesto, porque puede tardar unos 20 segundos en hacer login.

Bueno ayer ya me puse un poco más en serio en buscar una solución. Todo los foros y blogs apuntaban a dos soluciones: desactivar la resolución dns del demonio ssh (UseDNS = no) y desactivar un módulo de pam, el pam_ck_connector. Ninguna de las dos soluciones me sirvió, cosa que me extrañó mucho.

Me puse a investigar por mi cuenta. Lo primero, hacer ssh con info de debug, para ver dónde se quedaba pillado:

ahí, ahí es donde se quedaba cogido. En los logs del server, no veía nada fuera de lo normal, pero sí que había un gap de unos 20 segundos entre algunos mensajes y otros, pero no me daba ninguna pista. Hice varios strace del daemon ssh, pero no veía nada raro. Y me dio por ver la carga de la máquina cuando hacía login, con htop. Me veo que cuando se queda colgado en ese punto, hay un proceso «update-notifier» chupando toda la cpu, un ratillo; el mismo que dura el cuelgue. Estaba claro. Ese proceso estaba retrasando el login. ¿De dónde viene ese proceso? Pues lo llama un módulo de pam, el pam_motd. En mi /etc/pam.d/sshd tengo lo siguiente:

El módulo pam_motd.so se encarga de mostrar por pantalla el motd. En este caso, la primera línea hace que muestre el /run/motd.dynamic, y que no actualice esa info. Peeeeeeeeero, en la segunda línea (que no sé qué hace ahí!) no se indica el parámetro noupdate, con lo que lanza un proceso para actualizar la información de ese archivo motd: el proceso «update-notifier» que me originaba todo ese delay.
La solución es bien simple. O bien borro la segunda línea, o le pongo también un «noupdate«. Opté por la segunda opción, simplemente porque la primera línea no me lee el /etc/motd, y si alguna vez me da por poner uno, necesitaría la segunda línea. En fin, que me daba un poco igual.

Después de dar con la solución me extrañaba mucho no haberla encontrado antes por internet, pero se ve que no le pasa a mucha gente, aunque no soy el único, como descubrí después: http://www.depesz.com/2010/12/13/a-tale-of-slow-ssh-connections/

Bueno, espero le sirva esto a alguien!

Delay en ssh login

Deja un comentario

Tu dirección de correo electrónico no será publicada.