4 maneras 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 con la administración remota del servidor es la velocidad 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 toma unos segundos 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 sobre IPV4

OpenSSH admite ambos 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, usando la siguiente sintaxis:

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

$ vi ~.ssh/config 

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

  1. How to Configure Custom SSH Connections to Simplify Remote Access

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

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

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

La directiva UseDNS controla la funcionalidad anterior; para desactivarlo, búsquelo y descomprímalo 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

Un programa cliente ssh se usa para establecer conexiones a 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.

Puedes habilitar esto en tu archivo ~/.ssh/config .

Host *
	ControlMaster auto
	ControlPath  ~/.ssh/sockets/%[email protected]%h-%p
	ControlPersist 600

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

  • ControlMaster – enables the sharing of multiple sessions over a single network connection.
  • ControlPath – defines a path to the control socket used for connection sharing.
  • ControlPersist – if used together with ControlMaster, tells ssh to keep the master connection open in the background (waiting for future client connections) once the initial client connection has been closed.

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 de la primera conexión, y todas las conexiones posteriores serán mucho más rápidas.

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

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 utilizando ssh keygen en 5 sencillos pasos.

Una vez hecho esto, use la directiva PreferredAuthentications , dentro de los archivos ssh_config (globales o específicos para el usuario) de arriba. Esta directiva define el orden en 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 la siguiente sintaxis desde la línea de comando.

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

Si prefiere la autenticación de contraseña que se considera no segura, use esto.

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

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

# systemctl restart sshd	#Systemd
# service sshd restart 		#SysVInit

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

# man ssh_config
# man sshd_config 

También revise estas guías útiles para asegurar ssh en sistemas Linux:

  1. 5 Best Practices to Secure and Protect SSH Server
  2. How to Disconnect Inactive or Idle SSH Connections in Linux

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