En la publicación anterior, revisamos cómo usar el comando ssh
y sus opciones útiles. Sin embargo, introducir manualmente direcciones IP complicadas, nombres de usuario y números de puerto cada vez es realmente tedioso. Aquí es donde el archivo de configuración SSH puede resolver todos estos inconvenientes de una sola vez. Es como un marcador, que te permite guardar la información de acceso de los servidores que utilizas frecuentemente y acceder a ellos fácilmente con alias.
¿Qué es el archivo de configuración SSH?
El archivo de configuración SSH es un archivo de configuración que personaliza cómo funciona el cliente SSH. Si guardas la información de acceso (nombre de usuario, puerto, archivo de clave, etc.) para un host específico en este archivo, podrás acceder más tarde con solo usar un alias corto.
- Ubicación: Generalmente, se encuentra en la carpeta
.ssh
del directorio principal del usuario, bajo el nombreconfig
.- Ejemplo:
~/.ssh/config
- Ejemplo:
-
Crear archivo: Si no tienes el archivo
~/.ssh/config
, puedes crearlo tú mismo.bash touch ~/.ssh/config chmod 600 ~/.ssh/config # Asigna permisos de lectura/escritura solo al propietario por razones de seguridad
Reglas para escribir el archivo de configuración
El archivo de configuración es un archivo de texto simple, y cada configuración para un host comienza con la palabra clave Host
y se escribe en forma de bloque.
Estructura básica
Host [alias]
[opción1] [valor1]
[opción2] [valor2]
...
-
Host [alias]
: Inicia este bloque y define el alias que utilizarás. Este alias se usará en el comando SSH. También puedes introducir directamente la dirección real del host (IP o dominio). Se pueden utilizar caracteres comodín (*
,?
). -
Indentación: Las opciones bajo
Host
deben estar indentadas. Puedes usar espacios o tabulaciones, pero es recomendable mantener la coherencia. -
Opciones: Bajo
Host
, enumera varias opciones SSH que se aplicarán al conectarte con ese alias. Estas opciones son las mismas que usabas previamente en la formassh -opción
.
Opciones comúnmente usadas
Opción | Descripción | Ejemplo de valor |
HostName |
Dirección IP o nombre de dominio del servidor al que te conectarás | 192.168.1.100 o example.com |
User |
Nombre de la cuenta de usuario para acceder al servidor remoto | ubuntu , ec2-user , root |
Port |
Número de puerto SSH del servidor remoto (predeterminado 22) | 2222 |
IdentityFile |
Ruta del archivo de clave privada que se usará al conectar | ~/.ssh/id_ed25519_myserver |
ForwardAgent |
Habilitar el reenvío del agente SSH (Agent Forwarding, cuando se usa ssh-agent ) |
yes |
StrictHostKeyChecking |
Si se debe hacer una verificación estricta de la clave del host (yes recomendado) |
no (usado temporalmente durante pruebas iniciales) |
PortForwarding |
Si se permite el reenvío de puertos | yes |
LocalForward |
Configuración del reenvío de puertos locales (equivalente a la opción -L ) |
8080 localhost:80 |
ServerAliveInterval |
Intervalo para comprobar si el servidor sigue activo (en segundos) | 60 (para evitar desconexiones) |
ServerAliveCountMax |
Número de intentos antes de desconectar si falla la verificación del servidor | 3 |
Ejemplo de escritura de archivo de configuración SSH
Agreguemos algunas configuraciones para los servidores a los que accedemos frecuentemente al archivo ~/.ssh/config
.
# Primer servidor: servidor web (alias: webserver)
Host webserver
HostName 192.168.1.100
User ubuntu
Port 2222
IdentityFile ~/.ssh/id_ed25519_webserver # Usar clave dedicada para el servidor web
# Segundo servidor: servidor de desarrollo (alias: devbox)
Host devbox
HostName dev.example.com
User developer
IdentityFile ~/.ssh/id_rsa_dev # Usar clave RSA
# Reenviar el puerto 8000 local al puerto 80 remoto al acceder a este servidor
LocalForward 8000 localhost:80
# Tercer servidor: todos los servidores de AWS EC2 (alias: aws-*)
Host aws-*
User ec2-user
IdentityFile ~/.ssh/aws_ec2_key.pem
# Enviar señales periódicamente para evitar desconexiones
ServerAliveInterval 60
ServerAliveCountMax 3
# Configuración general para un rango de IP específico (alias: 10.0.0.*)
Host 10.0.0.*
User admin
Port 22
Descripción:
-
webserver
: Puedes conectarte al servidor192.168.1.100
como usuarioubuntu
, usando el puerto2222
y la claveid_ed25519_webserver
. -
devbox
: Acceso al servidordev.example.com
como usuariodeveloper
, utilizando la claveid_rsa_dev
, y reenviando el puerto local 8000 al puerto remoto 80. -
aws-*
: Configuración aplicable a todos los alias que comienzan conaws-
. Por ejemplo, al conectarte aaws-prod
oaws-dev
, se aplicarán automáticamente las configuraciones deUser
yIdentityFile
.HostName
seráprod
al conectarse aaws-prod
(usar más tarde con el comandossh aws-prod
). -
10.0.0.*
: Al conectarte a una dirección IP del tipo10.0.0.x
, automáticamente se aplicará el usuarioadmin
y el puerto predeterminado 22.
Cómo usar el archivo de configuración
Ahora que has guardado configuraciones en el archivo de configuración, acceder es mucho más simple. Probemos con los ejemplos anteriores.
1. Acceso utilizando un alias
Ejecútalo usando solo el alias en el comando de acceso SSH.
- Uso del alias
webserver
:
ssh webserver
Ingresa la frase de paso para la clave '/home/youruser/.ssh/id_ed25519_webserver':
ubuntu@webserver-ip:~ $
Este comando actúa internamente como `ssh -p 2222 -i ~/.ssh/id_ed25519_webserver ubuntu@192.168.1.100`.
- Uso del alias
devbox
:
ssh devbox
Ingresa la frase de paso para la clave '/home/youruser/.ssh/id_rsa_dev':
developer@devbox-domain:~ $
(Conectándose al mismo tiempo al puerto local 8000 al puerto 80 de dev.example.com)
- Uso del alias
aws-prod
(alias con comodín):
ssh aws-prod
Ingresa la frase de paso para la clave '/home/youruser/.ssh/aws_ec2_key.pem':
ec2-user@aws-prod-hostname:~ $
Nota: En el caso de un alias comodín como aws-prod
, donde no se especifica un nombre de host por separado, es posible que debas especificar la opción HostName
explícitamente o proporcionar el nombre del host en la línea de comandos. En el ejemplo de aws-*
, si no se especifica HostName
, el cliente SSH intentará interpretar prod
como nombre de host al ejecutar ssh aws-prod
. Para ser más claro, es común mapear el alias Host prod-server
a HostName prod.example.com
.
Ventajas de usar el archivo de configuración
- Conveniencia: Puedes reemplazar comandos SSH largos y complejos por un alias corto, lo que reduce errores de entrada y ahorra tiempo.
- Productividad: Puedes moverte rápidamente entre servidores a los que accedes a menudo, aumentando la eficiencia del trabajo.
- Facilidad de gestión: Puedes gestionar todas las configuraciones relacionadas con el acceso en un solo lugar, facilitando el mantenimiento. Por ejemplo, si cambia la dirección IP del servidor, solo es necesario editar el archivo de configuración.
- Seguridad: No es necesario dejar información crítica (p. ej. ruta del archivo de clave) en el historial de comandos.
Para concluir
El archivo de configuración SSH es una herramienta esencial para todos los desarrolladores y administradores de sistemas que utilizan SSH. Con este archivo, puedes hacer que tu experiencia de acceso SSH sea significativamente más conveniente y eficiente. ¡Abre el archivo ~/.ssh/config
y crea tus propios alias!
¡No olvides leer otras publicaciones relacionadas con SSH! Puedes buscar 'ssh' en el cuadro de búsqueda de la derecha para ver varios artículos sobre SSH.
Si tienes alguna pregunta, ¡no dudes en dejarla en los comentarios!
No hay comentarios.