Tutoriel Linux

Configurar SSH en Linux para sus servidores sin tener que escribirlo todo de nuevo

Débutant4 min de lecture

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 ~/.ssh con chmod 700 ~/.ssh.
  • Protege el archivo config y cada clave privada con chmod 600.
  • Controla el alias con ssh -G nombre_alias antes 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.

Ordenador Linux conectado a varios servidores para una configuración SSH
Una configuración SSH local permite conectar cada servidor con un alias dedicado.