1 – Uso básico de SSH config file
Cuando nos conectamos regularmente a varios servidores es sencillo olvidarte cosas como el puerto a conectarte, el usuario o incluso la dirección de IP. En vez de tener guardado una lista en un bloc de notas o apuntado en el escritorio podemos usar el “SSH Config File” para recordar los presets como host, user, puerto y si usas agent-forwarding con ese host o no. Incluso, podemos usar este archivo de configuración para evitar que la sesión de SSH se bloquee luego de un período corto de inactividad. Veamos como hacerlo.
Crear el archivo ~/.ssh/config
Para empezar tenemos que crear el archivo config
dentro de la ruta ~/.ssh/config
, para esto podemos usar el comando touch
:
touch ~/.ssh/config
Listo, ahora abrimos este archivo en nuestro editor de textos favorito, por ejemplo, Visual Code:
code ~/.ssh/config
Estructura básica del SSH Config File
Como ya hemos mencionado, en este archivo pondremos todas las configuraciones necesarias correspondientes a nuestras sesiones de SSH. La estructura básica de este archivo es la siguiente:
Host *
ServerAliveInterval 240
Host NOMBRE_A_ELEGIR
Port 22
HostName HOST_OR_IP
User USERNAME
ForwardAgent yes
Vamos a desglosarlo línea por línea. En la primera línea, el wildcard (*) indica que el bloque de configuración va a aplicarse para todas las conexiones, aquí podemos colocar todas las configuraciones que se repitan en los bloques siguientes. En la línea 2, vemos que tenemos la opción ServerAliveInterval
con el valor 240
, este indica el intervalo de tiempo (en segundos) que va a usar nuestro agente local para mandar “keepalive messages” y así evitar que se cuelgue nuestra conexión de ssh
luego de algunos minutos de inactividad (errorbroken pipeline
).
Pasemos al siguiente bloque de configuraciones. En la línea 4, reemplazamos NOMBRE_A_ELEGIR por cualquier nombre que nos sirva para describir nuestra conexión, por ejemplo, nosotros usaremos wemake_dev
. En la siguiente línea, en la opción de puerto podemos especificar un puerto en diferente si es que el SSH daemon remoto no está corriendo en el puerto por defecto (puerto 22). Luego, reemplazamos HOST_OR_IP por la dirección IP o URL del servidor a conectarnos, por ejemplo, 192.153.12.2
y finalmente en USERNAME pondremos el usuario con el que nos conectaremos, en este ejemplo, prueba
. Por último, usamos la opción de configuración ForwardAgent
para habilitar Agent Forwading con este servidor.
De esta manera nuestro archivo ~/.ssh/config
se convierte en:
Host *
ServerAliveInterval 240
# Host NOMBRE_A_ELEGIR
# Port 22
# HostName HOST_OR_IP
# User USERNAME
# ForwardAgent yes
Host wemake_dev
Port 22
HostName 192.153.12.2
User prueba
ForwardAgent yes
De esta manera pasamos de conectarnos con el comando:
ssh -A prueba@192.153.12.2 -p 22
A conectarnos simplemente con el siguiente comando:
ssh wemake_dev
Como vemos, así podemos evitar tener que recordar todas las direcciones, usuarios y puertos de configuración para cada servidor. Ten en cuenta que podemos crear tantos bloques de configuración como servidores (o combinaciones de conexión) tengamos, solo toma cuidado de no repetir el “host”.
Conclusión
Como vemos es bastante sencillo dejar que nuestra configuración se encargue de recordar las configuraciones de los servidores, para nosotros podernos enfocar en hacer las cosas relevantes. Espero que este tutorial te haya sido de ayuda, y no olvides consultar los enlace de abajo si quieres conocer más sobre SSH y las opciones de configuración disponibles.