Cuando administras varias máquinas, las mismas opciones de SSH rápidamente terminan en el historial: usuario, puerto, clave privada, a veces un rebote. El archivo ~/.ssh/config reemplaza esta línea interminable por un nombre corto, por ejemplo ssh preprod.
No necesitas modificar el servidor. Esta configuración vive en tu máquina y le indica al cliente OpenSSH cómo conectar cada máquina. Sobre todo, evita usar la clave o puerto incorrectos cuando varios entornos son similares.
Crea una entrada por servidor
Crea la carpeta si no existe, luego abre el archivo de configuración:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/config
Luego, agrega un bloque por máquina. Aquí, preprod es solo un alias local. Reemplaza la dirección, la cuenta, el puerto y la ruta de la clave por tus valores.
Host preprod
HostName 192.0.2.44
User admin
Port 2222
IdentityFile ~/.ssh/id_ed25519_preprod
IdentitiesOnly yes
Entonces podrás lanzar ssh preprod. HostName contiene el verdadero nombre DNS o la dirección IP, User la cuenta remota y Port el puerto SSH. IdentityFile selecciona la clave privada esperada. Con IdentitiesOnly yes, el cliente no propone todas las claves cargadas por tu agente SSH, lo que evita intentos innecesarios en un servidor que limita las autenticaciones.
Si ya estás usando una clave, verifica primero que esté bien protegida. Una clave privada no debe ser legible por otras cuentas en tu máquina:
chmod 600 ~/.ssh/id_ed25519_preprod
chmod 600 ~/.ssh/config
La guía para generar una clave SSH en Ubuntu cubre la creación del par de claves. Nunca copies una clave privada al servidor. Solo la clave pública tiene su lugar en ~/.ssh/authorized_keys del lado remoto.
Agrega configuraciones comunes al final del archivo
Un archivo config puede contener varios bloques Host. El cliente OpenSSH retiene el primer valor encontrado para la mayoría de las opciones. Por lo tanto, coloca los servidores más específicos en la parte superior y los valores generales al final.
Host production
HostName prod.example.net
User deploy
IdentityFile ~/.ssh/id_ed25519_production
IdentitiesOnly yes
Host backup
HostName backup.example.net
User backup
Port 2201
IdentityFile ~/.ssh/id_ed25519_backup
IdentitiesOnly yes
Host *
ServerAliveInterval 30
ServerAliveCountMax 3
El bloque Host * se aplica a todos los alias. Es adecuado para configuraciones realmente comunes, aquí el envío periódico de una señal para detectar una conexión bloqueada. Evita poner una clave o un usuario si tus servidores no utilizan todas la misma cuenta.
También puedes agrupar hosts que sigan la misma regla, con un patrón como Host *.intra. Mantén las excepciones por encima de este bloque. Un alias ambiguo o una regla general colocada demasiado pronto a menudo produce un comportamiento sorprendente.
Controla la configuración antes de conectarte
El siguiente comando muestra la configuración final calculada para un alias, sin abrir una sesión. Es muy práctico después de una modificación:
ssh -G preprod | grep -E '^(hostname|user|port|identityfile|identitiesonly) '
Verifica que hostname, user y port correspondan correctamente a la máquina deseada. También observa la ruta devuelta para identityfile. Si acabas de mover una clave, SSH aún puede apuntar hacia el antiguo archivo.
Luego, haz una prueba sencilla:
ssh preprod
ssh -v preprod
La opción -v muestra los pasos de conexión y los archivos de configuración leídos. No publiques esta salida tal cual en un ticket o un chat: puede revelar tus nombres de host, cuentas y rutas locales.
Cuando el archivo config no es suficiente
Un alias SSH resuelve la repetición de opciones. No corrige un servidor que rechaza tu clave, un puerto cerrado o una huella de host modificada. Si la autenticación te pide a menudo tu passphrase, usa ssh-agent en lugar de quitar la passphrase de la clave.
Para acceder a un servicio interno a través de un bastión, mantén una entrada distinta con ProxyJump y pruébala por separado. El túnel SSH responde a otra necesidad: transporta un puerto local o remoto, no reemplaza la configuración de un host.
- Protege
~/.sshconchmod 700 ~/.ssh. - Protege el archivo
configy cada clave privada conchmod 600. - Controla el alias con
ssh -G nombre_aliasantes de una primera conexión. - Prueba cada nuevo servidor con su alias, luego guarda las opciones comunes en un bloque
Host *colocado al final del archivo.
La documentación oficial ssh_config(5) detalla cada directiva. Tómate dos minutos para releer la salida de ssh -G antes de usar un alias en una máquina de producción: es más rápido que buscar por qué SSH eligió la clave incorrecta.
