En la publicación anterior revisamos el uso básico del comando ssh y sus opciones útiles. Sin embargo, introducir manualmente cada dirección IP, nombre de usuario y número de puerto resulta tedioso.

En estos casos, el archivo de configuración SSH es la solución perfecta. Almacena la información de los servidores que usas con frecuencia y te permite conectarte con un simple alias, como si fuera un favorito.

Yo mismo, cuando era un "total novato" y desconocía la existencia del archivo de configuración, solía registrar los comandos que usaba con frecuencia en .bashrc como alias. Cuando aprendí a crear el archivo config, me di cuenta de lo ingenuo que era.

Me sorprendiendo al descubrir el archivo SSH config


¿Qué es el archivo de configuración SSH?

El archivo de configuración SSH es un fichero que permite personalizar el comportamiento del cliente SSH. Al guardar la información de conexión (usuario, puerto, clave, etc.) para cada host, puedes conectarte más tarde usando solo un alias.

  • Ubicación: Normalmente se encuentra en la carpeta .ssh dentro del directorio home del usuario, llamado config. Si acabas de instalar SSH, es posible que no exista; en ese caso, créalo.
  • Creación del archivo: Si no existe ~/.ssh/config, créalo y asegúrate de que los permisos sean 600.
    touch ~/.ssh/config
    chmod 600 ~/.ssh/config  # ¡Los permisos son obligatorios por seguridad!

Reglas para escribir el archivo de configuración

El archivo es un texto plano. Cada host se define con la palabra clave Host y se escribe en bloque.

Estructura básica

Host [alias]
    [opción1] [valor1]
    [opción2] [valor2]
    ...
  • Host [alias]: Indica el inicio del bloque y define el alias que usarás. En lugar del alias, también puedes colocar la dirección real (IP o dominio) y usar comodines (*, ?).
  • Indentación: Los parámetros bajo Host deben estar indentados. Puedes usar espacios o tabulaciones, pero mantén la consistencia.
  • Opciones: Bajo Host se listan las opciones SSH que se aplicarán al usar ese alias. Son equivalentes a los parámetros ssh -opción.

Opciones más usadas

Opción Descripción Valor de ejemplo
HostName Dirección IP o dominio del servidor real 192.168.1.100 o example.com
User Nombre de usuario remoto ubuntu, ec2-user, root
Port Puerto SSH del servidor (22 por defecto) 2222
IdentityFile Ruta al archivo de clave privada ~/.ssh/id_ed25519_myserver
ForwardAgent Habilita el forwarding del agente SSH yes
StrictHostKeyChecking ¿Verificar estrictamente la clave del host? (yes recomendado) no (para pruebas iniciales)
PortForwarding Permitir port forwarding yes
LocalForward Configura port forwarding local (-L) 8080 localhost:80
ServerAliveInterval Intervalo en segundos para comprobar que el servidor está vivo 60
ServerAliveCountMax Número de intentos antes de desconectar 3

Ejemplo de configuración SSH

Añadamos configuraciones para algunos servidores que usamos con frecuencia.

# Primer servidor: web server (alias: webserver)
Host webserver
    HostName 192.168.1.100
    User ubuntu
    Port 2222
    IdentityFile ~/.ssh/id_ed25519_webserver  # clave exclusiva del web server

# Segundo servidor: dev server (alias: devbox)
Host devbox
    HostName dev.example.com
    User developer
    IdentityFile ~/.ssh/id_rsa_dev  # clave RSA
    # Forward local port 8000 to remote port 80
    LocalForward 8000 localhost:80 

# Tercer servidor: todos los EC2 de AWS (alias: aws-*)
Host aws-*
    User ec2-user
    IdentityFile ~/.ssh/aws_ec2_key.pem
    # Mantener la conexión viva
    ServerAliveInterval 60
    ServerAliveCountMax 3

# Configuración general para la subred 10.0.0.* (alias: 10.0.0.*)
Host 10.0.0.*
    User admin
    Port 22

Explicación:

  • webserver: Conecta a 192.168.1.100 como ubuntu usando el puerto 2222 y la clave id_ed25519_webserver.
  • devbox: Conecta a dev.example.com como developer con la clave id_rsa_dev y reenvía el puerto local 8000 al remoto 80.
  • aws-*: Aplica a cualquier alias que comience con aws-. Por ejemplo, ssh aws-prod usará automáticamente el usuario y la clave definidos.
  • 10.0.0.*: Para cualquier IP en la subred 10.0.0.x, se usa el usuario admin y el puerto 22.

En la práctica, no suelo usar comodines extensos; prefiero una configuración 1:1 por servidor. Cuando necesito acceder a un mismo servidor con distintas configuraciones, añado un alias adicional y elijo el que necesite, como si seleccionara un plato en un menú.


Botón de conexión SSH y la magia de la red

Cómo usar el archivo de configuración

Con la configuración guardada, conectarse se vuelve mucho más sencillo. Veamos un ejemplo.

1. Conexión por alias

Ejecuta el comando SSH usando solo el alias.

  • Usando el alias webserver:
    ssh webserver
    Enter passphrase for key '/home/youruser/.ssh/id_ed25519_webserver':
    ubuntu@webserver-ip:~ $

Este comando es equivalente a ssh -p 2222 -i ~/.ssh/id_ed25519_webserver ubuntu@192.168.1.100.

  • Usando el alias devbox:
    ssh devbox
    Enter passphrase for key '/home/youruser/.ssh/id_rsa_dev':
    developer@devbox-domain:~ $

(Si también conectas el puerto local 8000, se redirigirá al puerto 80 del servidor dev.example.com).


Ventajas de usar el archivo de configuración

  • Conveniencia: Reemplaza comandos largos y complejos por un alias corto, reduciendo errores y ahorrando tiempo.
  • Productividad: Accede rápidamente a los servidores que usas con frecuencia.
  • Mantenimiento sencillo: Todos los ajustes de conexión están centralizados; si cambia la IP de un servidor, solo actualizas el archivo.
  • Seguridad: Evita que la ruta de la clave aparezca en el historial de comandos.

Conclusión

El archivo de configuración SSH es una herramienta esencial para cualquier desarrollador o administrador que utilice SSH. Con él, puedes hacer que tus conexiones sean más rápidas, seguras y fáciles de gestionar. Abre ~/.ssh/config, crea tus alias y disfruta de una experiencia SSH más fluida.

¡Explora también otros posts relacionados con SSH! Busca "ssh" en la barra lateral derecha para encontrar más artículos.

Si tienes dudas, deja un comentario y con gusto te ayudaré.