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 fueran marcadores.

Yo mismo, en mis días de "total novato", solía registrar los comandos que usaba en .bashrc como alias. Cuando descubrí el archivo config, me di cuenta de lo ingenuo que era.

Me sorprendí 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 ~/.ssh/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 estructura en un 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 de un alias, también puedes colocar la dirección real (IP o dominio) y usar comodines (*, ?).
  • Indentación: Las opciones bajo Host deben estar indentadas. Puedes usar espacios o tabulaciones, pero mantén la consistencia.
  • Opciones: 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 reenvío de agente SSH yes
StrictHostKeyChecking ¿Verificar estrictamente la clave del host? (yes recomendado) no (para pruebas iniciales)
PortForwarding Permitir el reenvío de puertos yes
LocalForward Configuración del reenvío de puertos local (-L) 8080 localhost:80
ServerAliveInterval Intervalo (en segundos) para comprobar la actividad del servidor 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
    # Reenvía el puerto local 8000 al puerto remoto 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á ec2-user y la clave aws_ec2_key.pem.
  • 10.0.0.*: Para cualquier IP en la subred 10.0.0.x, usa 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ú.


Al pulsar el botón de conexión SSH, la magia se extiende por la red

Cómo usar el archivo de configuración

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

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 has configurado el reenvío del puerto local 8000, este se redirigirá al puerto 80 de dev.example.com).


Ventajas de usar el archivo de configuración

  • Conveniencia: Reemplaza comandos largos por alias cortos, 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 exponer claves o contraseñas 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, tu experiencia de conexión será más fluida y eficiente. Abre ~/.ssh/config, crea tus alias y disfruta de una gestión de conexiones más ordenada.

Si te interesa profundizar, busca en la barra lateral los artículos relacionados con ssh.

¡No dudes en dejar tus preguntas en los comentarios!