1 – Uso básico de SSH config file

Posted on Oct 25, 2020 - by Franco
Cover del post

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.

Fuentes y lectura recomendada