Cuando administras varias máquinas, las mismas opciones SSH pronto 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 equipo e indica al cliente OpenSSH cómo conectar cada máquina. Evita sobre todo usar la clave o el puerto incorrectos cuando varios entornos se parecen.
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 usas una clave, verifica primero que esté bien protegida. Una clave privada no debe ser legible por otras cuentas de tu equipo:
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 ajustes 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 precisos 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 sauvegarde
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 ajustes realmente comunes, aquí el envío periódico de una señal para detectar una conexión congelada. Evita poner una clave o un usuario ahí si tus servidores no usan todos 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 útil después de una modificación:
ssh -G preprod | grep -E '^(hostname|user|port|identityfile|identitiesonly) '
Verifica que hostname, user y port correspondan realmente a la máquina objetivo. También revisa la ruta devuelta para identityfile. Si acabas de mover una clave, SSH puede seguir apuntando al 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 chat: puede revelar tus nombres de hosts, 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 frase de paso, utiliza ssh-agent en lugar de quitar la frase de paso de la clave.
Para alcanzar un servicio interno a través de un bastión, mantén una entrada separada 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 equivocada.
