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 de servidores remotos son las velocidades de conexión, especialmente cuando se trata de la creación de sesiones entre las máquinas locales y remotas.

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 intenta iniciar varias conexiones en sucesión, esto provoca una sobrecarga (combinación de tiempo de cálculo excesivo o indirecto, memoria, ancho de banda u otros recursos relacionados para llevar a cabo 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 es compatible con IPv4/IP6, pero a veces las conexiones IPv6 tienden a ser más lentas. Por lo tanto, puede considerar forzar conexiones ssh solo a través de IPv4, utilizando la sintaxis siguiente:

# ssh -4 [email protected]

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 "any", "inet" solo para IPv4 o "inet6".

$ vi ~.ssh/config 

Aquí hay una guía de inicio útil sobre la configuración del 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 las conexiones a través de IPv4 utilizando la directiva anterior en el archivo/etc/ssh/sshd_config.

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

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

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

UseDNS  no

3. Reutilice 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/%[email protected]%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 utilizando estas directivas:

  • ControlMaster: permite compartir varias sesiones a través de una sola conexión de red.
  • ControlPath: define una ruta al conector de control utilizado para compartir conexiones.
  • 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 inicial del cliente.

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/%[email protected]%h-%p
	ControlPersist  600

De esta manera, solo sufrirá la sobrecarga de conexión para 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 usar un método de autenticación dado 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, use la directiva PreferredAuthentications, dentro de los archivos ssh_config (globales o específicos del usuario) arriba. 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, use esta sintaxis a continuación desde la línea de comando.

# ssh -o "PreferredAuthentications=publickey" [email protected]

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

# ssh -o "PreferredAuthentications=password" [email protected]

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 que se utilizan aquí, consulte las páginas de 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 las conexiones SSH inactivas o inactivas en Linux

¡Eso es todo por ahora! ¿Tiene algún consejo/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.