Volver a herramientas

¿Qué es SSH Config?

El archivo ~/.ssh/config permite configurar conexiones SSH de forma persistente sin necesidad de escribir todos los parámetros en cada conexión.

  • Alias: Usa nombres cortos para conectar (ej: ssh mi-servidor en lugar de ssh -p 22 [email protected])
  • ProxyJump: Conecta a servidores internos a través de un servidor bastion/jump host
  • Keep-alive: Mantén conexiones activas con ServerAliveInterval
  • Seguridad: Usa StrictHostKeyChecking para verificar host keys

Ejemplo: Conexión con Jump Host

Para conectar a un servidor interno a través de un servidor bastion:

  1. Configura el servidor bastion como un host separado en ~/.ssh/config
  2. En el servidor interno, usa ProxyJump bastion para indicar que la conexión debe pasar por el bastion

Ahora puedes conectar con: ssh servidor-interno

Preguntas frecuentes

¿Cómo configurar ~/.ssh/config para conectar por SSH a múltiples servidores?

Edita o crea `~/.ssh/config` con bloques Host por servidor. Cada bloque define alias (`Host`), dirección (`HostName`), usuario (`User`), puerto (`Port`) y clave SSH (`IdentityFile`). Ejemplo: `Host web-prod HostName 203.0.113.10 User deploy Port 22 IdentityFile ~/.ssh/id_ed25519`. Con esto escribes `ssh web-prod` en lugar del comando completo. El archivo debe tener permisos 600 (`chmod 600 ~/.ssh/config`) o SSH lo ignorará por seguridad.

¿Qué es un Jump Host o ProxyJump en SSH y cómo configurarlo?

Un Jump Host (bastión) es un servidor intermedio para acceder a servidores internos que no tienen IP pública. En `~/.ssh/config`, usa `ProxyJump usuario@bastion`. Ejemplo: `Host interno HostName 10.0.1.50 User admin ProxyJump bastion.empresa.com`. Al hacer `ssh interno`, SSH se conecta automáticamente al bastión y desde ahí salta al destino. Esto evita exponer servidores internos directamente a Internet y centraliza la autenticación en el punto de entrada.

¿Cómo configurar clave SSH por servidor en ~/.ssh/config?

Usa la directiva `IdentityFile` dentro de cada bloque Host para asignar una clave SSH específica a cada servidor. Ejemplo: `Host github.com HostName github.com User git IdentityFile ~/.ssh/id_ed25519_github` y `Host servidor HostName 192.168.1.100 User root IdentityFile ~/.ssh/id_rsa_empresa`. Esto es esencial cuando gestionas múltiples proveedores o entornos con diferentes pares de claves, evitando errores de autenticación por usar la clave incorrecta.

¿Cómo mantener alive las conexiones SSH para que no se congelen?

Para evitar que las conexiones SSH se congelen por inactividad, añade en `~/.ssh/config`: `Host * ServerAliveInterval 60 ServerAliveCountMax 3`. La directiva `ServerAliveInterval` envía un paquete keepalive cada 60 segundos desde el cliente al servidor. `ServerAliveCountMax 3` define cuántos keepalives pueden fallar antes de cerrar la conexión. Si el servidor también tiene `ClientAliveInterval` configurado, la conexión es bidireccionalmente resistente a timeouts de NAT y cortafuegos.