¿Dónde se almacenan las claves SSH en Linux — Y cómo gestionarlas de forma segura
SSH (Secure Shell) es una de las herramientas más críticas en el ecosistema Linux. Los administradores de sistemas, desarrolladores e ingenieros de DevOps la utilizan diariamente para acceso remoto a servidores, transferencias seguras de archivos, automatización de implementaciones y gestión de infraestructura. Aunque la mayoría de los usuarios interactúan con SSH a través de un simple comando de terminal, la verdadera columna vertebral de seguridad reside en los pares de claves SSH — credenciales criptográficas que permiten autenticación sin contraseña, flujos de trabajo automatizados y control de acceso reforzado.
Ya sea que estés gestionando una única instancia de VPS Hosting u orquestando acceso en docenas de Dedicated Servers, entender exactamente dónde se almacenan las claves SSH — y cómo gestionarlas correctamente — no es opcional. Es un requisito de seguridad fundamental.
Esta guía cubre todo: ubicaciones de almacenamiento de claves predeterminadas, claves de host a nivel del sistema, configuraciones personalizadas, requisitos de permisos y mejores prácticas para la gestión segura de claves.
¿Qué son las claves SSH y por qué son importantes?
Las claves SSH utilizan criptografía asimétrica para autenticar usuarios y servidores. Cada par de claves consta de:
- Clave privada — se mantiene en secreto en la máquina cliente, nunca se comparte
- Clave pública — se coloca en el servidor remoto para verificar la identidad
Cuando te conectas a un servidor, SSH utiliza un protocolo de enlace criptográfico para verificar que posees la clave privada correspondiente a la clave pública en el servidor, sin transmitir nunca la clave privada en sí. Esto es fundamentalmente más seguro que la autenticación basada en contraseñas.
Ubicación de Almacenamiento Predeterminada de Claves SSH (Claves de Usuario)
Para cualquier usuario estándar de Linux, las claves SSH se almacenan en un directorio oculto dentro de la carpeta de inicio:
~/.ssh/Esto se expande a la ruta completa:
/home/username/.ssh/Para el usuario root específicamente:
/root/.ssh/Archivos Comunes Dentro de ~/.ssh/
| Archivo | Propósito |
|---|---|
id_rsa | Clave privada RSA predeterminada |
id_rsa.pub | Clave pública RSA coincidente |
id_ecdsa | Clave privada ECDSA |
id_ed25519 | Clave privada Ed25519 (recomendada) |
id_*.pub | Contraparte de clave pública para cualquier clave privada |
authorized_keys | Lista de claves públicas permitidas para iniciar sesión en esta cuenta |
known_hosts | Huellas dactilares de servidores conectados previamente |
config | Configuración de cliente SSH específica del usuario |
Cuando ejecutas ssh-keygen, las claves se escriben en este directorio de forma predeterminada a menos que especifiques explícitamente una ruta diferente durante la generación de claves.
Ubicaciones de claves SSH en todo el sistema (claves de host)
Más allá de las claves de usuario, el daemon SSH (sshd) — el componente del lado del servidor — mantiene su propio conjunto de claves de host. Estas se almacenan en todo el sistema en:
/etc/ssh/Archivos de claves de host en /etc/ssh/
| Archivo | Propósito |
|---|---|
ssh_host_rsa_key | Clave privada de host RSA |
ssh_host_rsa_key.pub | Clave pública de host RSA |
ssh_host_ecdsa_key | Clave privada de host ECDSA |
ssh_host_ecdsa_key.pub | Clave pública de host ECDSA |
ssh_host_ed25519_key | Clave privada de host Ed25519 |
ssh_host_ed25519_key.pub | Clave pública de host Ed25519 |
Estas claves de host sirven un propósito diferente al de las claves de usuario. Cuando un cliente se conecta a un servidor por primera vez, el servidor presenta su clave pública de host. El cliente almacena esta huella digital en ~/.ssh/known_hosts. En conexiones posteriores, SSH verifica que la huella digital coincida — protegiéndose contra ataques de intermediario.
> Importante: Las claves de host se generan automáticamente durante la instalación del servidor SSH. Nunca debería ser necesario crearlas manualmente, pero debería saber dónde se encuentran para propósitos de auditoría y copia de seguridad.
Ubicaciones personalizadas de claves SSH
No estás restringido al directorio ~/.ssh/ predeterminado. Las claves SSH se pueden generar y almacenar en cualquier lugar del sistema de archivos. Para usar una clave almacenada en una ubicación no predeterminada, especifícala explícitamente:
ssh -i /path/to/custom_key user@hostUsando ~/.ssh/config para múltiples claves
Administrar múltiples servidores, proyectos o cuentas de usuario se vuelve mucho más limpio con un archivo ~/.ssh/config correctamente configurado. Esto te permite definir configuraciones por host, incluida la clave a usar:
Host production-server
HostName 203.0.113.10
User deploy
IdentityFile ~/.ssh/production_ed25519
Host staging-server
HostName 203.0.113.20
User deploy
IdentityFile ~/.ssh/staging_ed25519
Host github.com
User git
IdentityFile ~/.ssh/github_keyCon esta configuración, ejecutar ssh production-server usa automáticamente la clave correcta sin ninguna bandera adicional.
Cómo se utilizan las claves SSH: Cliente vs. Servidor
Conexiones salientes (lado del cliente)
Cuando inicias una conexión SSH, el cliente SSH busca claves privadas en ~/.ssh/ de forma predeterminada. Estas claves se utilizan para autenticarte en el servidor remoto.
Las herramientas que utilizan claves de cliente SSH incluyen:
ssh— acceso directo a shell remotoscp— copia segura de archivosrsync— sincronización de archivos sobre SSHgit— cuando se utilizan repositorios remotos basados en SSH
Conexiones entrantes (lado del servidor)
En el servidor, SSH verifica un archivo específico para determinar qué usuarios están autorizados a conectarse:
~/.ssh/authorized_keysEste archivo contiene una clave pública por línea. Cada entrada otorga al titular de la clave privada correspondiente permiso para iniciar sesión como ese usuario.
Ejemplo práctico: Si el usuario alice desea SSH en un servidor como usuario webadmin, la clave pública de Alice debe estar presente en /home/webadmin/.ssh/authorized_keys — no en el directorio de inicio de Alice en ese servidor.
Permisos de Archivo — Crítico para la Seguridad SSH
Aquí es donde muchos administradores cometen errores costosos. SSH es deliberadamente estricto con los permisos de archivo. Si los permisos son demasiado abiertos, SSH rechazará silenciosamente usar tus claves o rechazará los intentos de inicio de sesión por completo.
Configuración de Permisos Requerida
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 600 ~/.ssh/configTabla de Referencia de Permisos
| Ruta | Permiso Requerido | Octal |
|---|---|---|
~/.ssh/ | Lectura/escritura/ejecución solo del propietario | 700 |
~/.ssh/authorized_keys | Lectura/escritura solo del propietario | 600 |
~/.ssh/id_rsa (clave privada) | Lectura/escritura solo del propietario | 600 |
~/.ssh/id_rsa.pub (clave pública) | Lectura del propietario, lectura de otros | 644 |
~/.ssh/config | Lectura/escritura solo del propietario | 600 |
Para corregir permisos en un comando:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/* && chmod 644 ~/.ssh/*.pubGeneración segura de claves SSH
Siempre prefiere Ed25519 sobre RSA para nuevas claves. Ed25519 ofrece una seguridad más fuerte con tamaños de clave más pequeños y un rendimiento más rápido.
ssh-keygen -t ed25519 -C "your_email@example.com"Para sistemas heredados que requieren RSA, utiliza al menos 4096 bits:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"Siempre establece una frase de contraseña cuando se te solicite. Una frase de contraseña cifra la clave privada en el disco, por lo que incluso si un atacante obtiene acceso a tu sistema de archivos, no puede usar la clave sin la frase de contraseña.
Gestión de claves con ssh-agent
Ingresar tu contraseña cada vez que usas una clave SSH se vuelve impracticable. ssh-agent resuelve esto almacenando en caché las claves descifradas en memoria durante la duración de tu sesión.
Iniciando ssh-agent y agregando una clave
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519Se te pedirá la contraseña una vez. Después de eso, las operaciones SSH utilizan la clave en caché automáticamente.
Comandos útiles de ssh-agent
# List currently loaded keys
ssh-add -l
# Remove a specific key from the agent
ssh-add -d ~/.ssh/mykey
# Remove all keys from the agent
ssh-add -DCopiar claves públicas a servidores remotos
La forma más fácil de instalar tu clave pública en un servidor remoto es con ssh-copy-id:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@remote-hostEsto añade tu clave pública a ~/.ssh/authorized_keys en el servidor remoto y establece los permisos correctos automáticamente.
Si ssh-copy-id no está disponible, hazlo manualmente:
cat ~/.ssh/id_ed25519.pub | ssh user@remote-host "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"Auditoría y Depuración de Problemas de Claves SSH
Registro de Conexión Detallado
Cuando la autenticación SSH falla, el modo detallado revela exactamente qué está sucediendo:
ssh -v user@hostPara aún más detalle:
ssh -vvv user@hostEsta salida muestra qué archivos de identidad se intentaron, si se consultó el agente y dónde falló la autenticación.
Verificar el Registro SSH del Lado del Servidor
En el servidor remoto, los eventos de autenticación SSH se registran en:
# Debian/Ubuntu
tail -f /var/log/auth.log
# CentOS/RHEL/Fedora
tail -f /var/log/secure
# Systems using journald
journalctl -u sshd -fVerificar Tu Archivo authorized_keys
# Check the file exists and has correct permissions
ls -la ~/.ssh/authorized_keys
# View its contents
cat ~/.ssh/authorized_keys
# Count how many keys are authorized
grep -c "ssh-" ~/.ssh/authorized_keysMejores prácticas de seguridad de claves SSH
La gestión adecuada de claves va más allá de saber dónde se almacenan los archivos. Sigue estas prácticas en cada sistema que administres:
1. Usa una clave por propósito
Nunca reutilices la misma clave SSH en diferentes entornos, clientes o proyectos. Usa claves separadas para acceso personal, automatización de implementación y acceso compartido del equipo.
2. Rota las claves regularmente
Trata las claves SSH como contraseñas — rótalas periódicamente, especialmente después de salidas de miembros del equipo o compromisos sospechosos.
3. Audita archivos authorized_keys
Revisa regularmente qué claves públicas están autorizadas en cada servidor. Elimina cualquier clave que pertenezca a empleados anteriores, automatización obsoleta o fuentes no reconocidas:
# Find all authorized_keys files on a system
find / -name "authorized_keys" 2>/dev/null4. Desactiva la autenticación por contraseña
Una vez que las claves SSH estén configuradas, desactiva completamente el inicio de sesión SSH basado en contraseña en /etc/ssh/sshd_config:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-passwordReinicia sshd después de los cambios:
systemctl restart sshd5. Restringe el uso de claves raíz
Evita usar claves SSH raíz en múltiples entornos. Usa cuentas de usuario habilitadas para sudo con claves individuales en su lugar.
6. Usa autenticación basada en certificados para escala
Para infraestructuras grandes, considera certificados SSH (a través de una Autoridad de certificados SSH) en lugar de administrar entradas authorized_keys individuales. Esto simplifica dramáticamente la gestión de acceso en muchos servidores.
Claves SSH en Entornos Cloud y Hosting
Al desplegar servidores en entornos cloud o hosting administrado, la gestión de claves SSH se vuelve aún más crítica. La mayoría de plataformas — incluyendo proveedores de VPS Hosting — te permiten inyectar una clave pública en el momento del aprovisionamiento, dándote acceso seguro inmediato sin necesidad de establecer nunca una contraseña.
Para equipos que gestionan múltiples entornos, considera emparejar tu estrategia de clave SSH con una configuración estructurada de Paneles de Control VPS, que puede simplificar la gestión de usuarios y el control de acceso en toda tu infraestructura.
Si estás ejecutando aplicaciones web o servicios que requieren comunicación segura más allá de SSH, emparejar la configuración de tu servidor con Certificados SSL correctamente configurados garantiza cifrado de extremo a extremo para todo el tráfico — no solo para acceso administrativo.
Para equipos que dependen de Email Hosting junto con su infraestructura de servidores, la gestión de claves SSH se extiende a la seguridad de los sistemas que manejan tu correo — otra razón por la que la higiene consistente de claves en todos los servidores es importante.
Referencia Rápida: Ubicaciones de Archivos de Clave SSH
| Ubicación | Tipo | Propósito |
|---|---|---|
~/.ssh/id_ed25519 | Clave privada del usuario | Autenticación del cliente |
~/.ssh/id_ed25519.pub | Clave pública del usuario | Distribuida a servidores |
~/.ssh/authorized_keys | Claves públicas autorizadas | Controla quién puede iniciar sesión |
~/.ssh/known_hosts | Huellas dactilares del servidor | Previene ataques MITM |
~/.ssh/config | Configuración del cliente | Configuración por host |
/etc/ssh/ssh_host_* | Claves del host | Identidad del servidor |
/etc/ssh/sshd_config | Configuración del demonio | Configuración del servidor SSH |
Conclusión
Entender dónde se almacenan las claves SSH en Linux — y gestionarlas con disciplina — es una de las habilidades más importantes para cualquiera que trabaje con servidores, ya sea como desarrollador independiente o como parte de un gran equipo de operaciones.
Para resumir los puntos clave:
- Las claves de usuario se encuentran en
~/.ssh/y se utilizan para la autenticación del lado del cliente - Las claves del host se encuentran en
/etc/ssh/e identifican el servidor a los clientes que se conectan authorized_keyscontrola el acceso entrante — audítalo regularmente- Los permisos de archivo son innegociables — los permisos incorrectos rompen SSH silenciosamente
- Ed25519 es el tipo de clave preferido para la generación de nuevas claves
- Siempre usa frases de contraseña y
ssh-agentpara la gestión diaria de claves - Rota y audita claves como parte de tu higiene de seguridad regular
En sistemas de producción — ya sea que estés ejecutando Servidores Dedicados o infraestructura compartida — la mala gestión de claves SSH es uno de los vectores más comunes para acceso no autorizado. La inversión de tiempo en hacerlo correctamente genera dividendos en seguridad, confiabilidad y tranquilidad.
Trata tus claves SSH con el mismo cuidado que darías a cualquier credencial crítica. Porque eso es exactamente lo que son.
en todos los servicios de hosting