Problema de login lento por conexión SSH

Solucionar acceso lento por SSH en sistemas GNU/Linux.

En ocasiones, la conexión y login a través de SSH es lenta en equipos Linux. Normalmente, es un problema que aparece en sistemas como CentOS, RHEL o Ubuntu.

Al intentar realizar una conexión mediante el protocolo Secure SHell (SSH) suele tardar entre 10 y 20 segundos acceder o pedir la password, cuando lo normal es que sea prácticamente inmediato. Este retraso puede hacernos pensar que hay algún problema en la conexión de red o directamente en la máquina remota, comprobando si existe alguna sobrecarga que ralentice el proceso de autenticación.


Por ejemplo, si realizamos un ping a la dirección IP de esta máquina recibiremos respuesta sin demora. Es posible que este largo tiempo de espera se deba al orden y configuración que utiliza SSH para autenticar, comprobando unos métodos de autenticación antes que otros.

Por qué tarda en hacer login por SSH

Hay dos razones por la que el establecimiento de la conexión por SSH puede ser demasiado lenta o tardar más de lo habitual:

  • El equipo intenta hacer consultas de registros inversos al servidor DNS. Si la opción está activada y el servidor DNS no está configurado, penalizará en el tiempo de conexión.
  • Problemas con los métodos de autenticación o con el orden de estos.

Tras realizar un ping a la máquina, podemos realizar varias comprobaciones. La primera de ella es ver cuánto tiempo tarda en realizar el login correctamente con time ssh usuario@192.168.205.100 exit.

Otra es realizar la conexión SSH en modo verbose que permita debuggear la conexión. Ejecutando ssh -v usuario@192.168.1.119

Cómo solucionar la conexión SSH lenta.

Salida de una conexión SSH en modo verbose.

Como se ve en la salida del comando, intenta realizar la conexión utilizando los métodos de autenticación gssapi-keyex, gssapi-with-mic, publickey y finalmente mediante password.

Cómo arreglar el login lento por SSH

En el primer caso podemos solucionarlo agregando la dirección IP del cliente en el /etc/hosts de la máquina servidor. Es decir, si me conecto con la dirección IP 192.168.1.119 al servidor con dirección IP 192.168.205.100 debería agregar la IP 192.168.1.119 al /etc/hosts. Otra opción sería montar un servidor DNS que permitiera resolver las direcciones IP y los nombres de hosts de la red que se conecta.

La manera más fácil pero también la más insegura es desactivar la opción de resolución inversa de las direcciones IP. De esta manera OpenSSH no comprobaría que la dirección IP corresponde con el nombre del host, pudiendo suponer un riesgo de seguridad. Esta opción se desactiva buscando el parámetro UseDNS para establecerlo como UseDNS no en el archivo de configuración /etc/ssh/sshd_config
Desactivar resolución inversa de OpenSSH.

En el segundo, también podemos desactivar la autenticación a través de GSSAPI. GSSAPI es un estándar utilizado normalmente con Kerberos y de no estar disponible también puede penalizar el tiempo de conexión.
Resolver el problema de identificación lenta en SSH.

Finalmente en mi caso conecta con el equipo mediante clave pública, que en caso de no encontrarla pasaría a pedir la password.

Tras cualquier cambio en el fichero de configuración de SSH es necesario reiniciar el demonio de SSHD: /etc/init.d/sshd restart y podremos acceder al equipo remoto mediante SSH sin excesivos retardos en la conexión.

Referencias:

Compartir es agradecer. Si te ha gustado... ¡compartélo!
Comparte con tus amigos










Enviar

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.