Búsqueda de sitios web

4 formas de acelerar las conexiones SSH en Linux


SSH es el método más popular y seguro para administrar servidores Linux de forma remota. Uno de los desafíos de la administración remota de servidores es la velocidad de conexión, especialmente cuando se trata de la creación de sesiones entre las máquinas remotas y locales.

Hay varios cuellos de botella en este proceso, un escenario es cuando se conecta a un servidor remoto por primera vez; normalmente se necesitan unos segundos para establecer una sesión. Sin embargo, cuando se intenta iniciar varias conexiones seguidas, esto provoca una sobrecarga (combinación de tiempo de cálculo excesivo o indirecto, memoria, ancho de banda u otros recursos relacionados para realizar la operación).

En este artículo, compartiremos cuatro consejos útiles sobre cómo acelerar las conexiones SSH remotas en Linux.

1. Forzar la conexión SSH a través de IPV4

OpenSSH admite tanto IPv4 como IP6, pero a veces las conexiones IPv6 tienden a ser más lentas. Por lo tanto, puedes considerar forzar conexiones ssh solo a través de IPv4, usando la siguiente sintaxis:

ssh -4 [email 

Alternativamente, use la directiva AddressFamily (especifica la familia de direcciones que se usará al conectarse) en su archivo de configuración ssh /etc/ssh/ssh_config (configuración global) o ~ /.ssh/config (archivo específico del usuario).

Los valores aceptados son “cualquier”, “inet” solo para IPv4 o “inet6”.

vi ~.ssh/config 

Aquí hay una guía de inicio útil sobre cómo configurar el archivo de configuración ssh específico del usuario:

  1. Cómo configurar conexiones SSH personalizadas para simplificar el acceso remoto

Además, en la máquina remota, también puede indicarle al demonio sshd que considere conexiones a través de IPv4 usando la directiva anterior en el archivo /etc/ssh/sshd_config.

2. Deshabilite la búsqueda de DNS en una máquina remota

De forma predeterminada, el demonio sshd busca el nombre del host remoto y también verifica que el nombre de host resuelto para la dirección IP remota se asigne a la misma dirección IP. Esto puede provocar retrasos en el establecimiento de la conexión o la creación de sesiones.

La directiva UseDNS controla la funcionalidad anterior; para deshabilitarlo, búsquelo y descomentelo en el archivo /etc/ssh/sshd_config. Si no está configurado, agréguelo con el valor no.

UseDNS  no

3. Reutilizar la conexión SSH

Se utiliza un programa cliente ssh para establecer conexiones con un demonio sshd que acepta conexiones remotas. Puede reutilizar una conexión ya establecida al crear una nueva sesión ssh y esto puede acelerar significativamente las sesiones posteriores.

Puede habilitar esto en su archivo ~/.ssh/config.

Host *
	ControlMaster auto
	ControlPath  ~/.ssh/sockets/%r@%h-%p
	ControlPersist 600

La configuración anterior (Host *) permitirá la reutilización de la conexión para todos los servidores remotos a los que se conecte mediante estas directivas:

  • ControlMaster: permite compartir múltiples sesiones a través de una única conexión de red.
  • ControlPath: define una ruta al socket de control utilizado para compartir la conexión.
  • ControlPersist: si se usa junto con ControlMaster, le dice a ssh que mantenga la conexión maestra abierta en segundo plano (esperando futuras conexiones del cliente) una vez que se haya cerrado la conexión del cliente inicial.

Puede habilitar esto para conexiones a un servidor remoto específico, por ejemplo:

Host server1
	HostName   www.example.com
	IdentityFile  ~/.ssh/webserver.pem
      	User username_here
	ControlMaster auto
	ControlPath  ~/.ssh/sockets/%r@%h-%p
	ControlPersist  600

De esta manera, solo sufrirá la sobrecarga de la primera conexión y todas las conexiones posteriores serán mucho más rápidas.

4. Utilice un método de autenticación SSH específico

Otra forma de acelerar las conexiones ssh es utilizar un método de autenticación determinado para todas las conexiones ssh, y aquí recomendamos configurar el inicio de sesión sin contraseña ssh usando ssh keygen en 5 sencillos pasos.

Una vez hecho esto, utilice la directiva PreferredAuthentications, dentro de los archivos ssh_config (globales o específicos del usuario) anteriores. Esta directiva define el orden en el que el cliente debe probar los métodos de autenticación (puede especificar una lista separada por comandos para usar más de un método).

PreferredAuthentications=publickey 

Opcionalmente, utilice esta sintaxis a continuación desde la línea de comando.

ssh -o "PreferredAuthentications=publickey" [email 

Si prefiere la autenticación de contraseña que se considera insegura, utilice esta.

ssh -o "PreferredAuthentications=password" [email 

Finalmente, debe reiniciar su demonio sshd después de realizar todos los cambios anteriores.

systemctl restart sshd	#Systemd
service sshd restart 		#SysVInit

Para obtener más información sobre las directivas utilizadas aquí, consulte las páginas del manual ssh_config y sshd_config.

man ssh_config
man sshd_config 

Consulte también estas guías útiles para proteger ssh en sistemas Linux:

  1. 5 mejores prácticas para asegurar y proteger el servidor SSH
  2. Cómo desconectar conexiones SSH inactivas o inactivas en Linux

¡Eso es todo por ahora! ¿Tiene algún consejo o truco para acelerar las conexiones SSH? Nos encantaría conocer otras formas de hacer esto. Utilice el formulario de comentarios a continuación para compartir con nosotros.