Introducción a las Claves SSH
Las claves SSH (Secure Shell) ofrecen un método de autenticación mucho más seguro que las contraseñas tradicionales. En lugar de escribir una contraseña en cada conexión, se utiliza un par de claves criptográficas:
- Clave privada : Permanece en su ordenador local (nunca la comparta)
- Clave pública : Instalada en el servidor VPS
Cuando se conecta, el servidor verifica que su clave privada coincida con la clave pública registrada. Si la coincidencia es validada, se autentica instantáneamente.
Ventajas de las claves SSH
| Aspecto | Contraseña | Clave SSH |
|---|---|---|
| Seguridad | Vulnerable a ataques de fuerza bruta | Casi imposible de descifrar |
| Conveniencia | Requiere entrada manual en cada conexión | Conexión automática |
| Compartir | Riesgo si se divulga | Clave pública compartible sin riesgos |
| Longitud | Generalmente 8-20 caracteres | 2048-4096 bits de cifrado |
| Automatización | Difícil de automatizar con scripts | Ideal para scripts |
🖥️ Método 1 : Generar una Clave SSH en Windows con PuTTY
Etapa 1 : Descargar PuTTY y PuTTYgen
PuTTY es el cliente SSH más popular para Windows. PuTTYgen es la utilidad de generación de claves incluida.
- Visite el sitio oficial: https://www.putty.org/
- Descargue el paquete de instalación MSI (64 bits o 32 bits según su sistema)
- Instale PuTTY - PuTTYgen se incluirá automáticamente
También puede descargar solo puttygen.exe si ya tiene PuTTY.
El archivo puttygen.exe descargado
Etapa 2 : Abrir PuTTYgen
-
Abra PuTTYgen a través de :
- Menú Inicio → Todos los programas → PuTTY → PuTTYgen
- O haga doble clic en
puttygen.exe
-
La interfaz de generación de claves se mostrará:
Interfaz principal de PuTTYgen
Etapa 3 : Configurar los parámetros
Antes de generar la clave, verifique los parámetros en la parte inferior de la ventana:
| Parámetro | Valor recomendado | Descripción |
|---|---|---|
| Tipo de clave | RSA o EdDSA (Ed25519) | Algoritmo de cifrado |
| Número de bits | 4096 (RSA) o 256 (Ed25519) | Longitud de la clave |
💡 Recomendación : Para una máxima seguridad, elija RSA 4096 bits o EdDSA (Ed25519) que es más moderno y eficiente.
Etapa 4 : Generar el par de claves
- Haga clic en el botón Generate
- Importante : Mueva el ratón de forma aleatoria en el área vacía para generar entropía (aleatoriedad criptográfica)
Mueva el ratón para generar aleatoriedad
- Espera a que la barra de progreso se complete
Etapa 5 : Configurar y guardar las claves
Una vez generada la clave, verá esta pantalla:
Clave SSH generada con éxito
Agregar una frase de paso (recomendado)
La frase de paso añade una capa de seguridad adicional. Incluso si alguien obtiene su clave privada, no podrá usarla sin la frase de paso.
Introducción de la frase de paso
- En Key passphrase, ingrese una frase secreta
- Confírmela en Confirm passphrase
Guardar la clave privada
- Haga clic en Save private key
- Elija una ubicación segura
- Nombre el archivo (ej:
mi_clave_vps.ppk)
Botón Save private key
Guardando el archivo .ppk
Guardar la clave pública
- Haga clic en Save public key
- Nombre el archivo (ej:
mi_clave_vps.pub)
Guardando la clave pública
Copiar la clave pública en formato OpenSSH
Importante : Para servidores Linux, debe copiar la clave en formato OpenSSH:
- Seleccione todo el texto en la zona "Public key for pasting into OpenSSH authorized_keys file"
- Cópielo (Ctrl+C)
- Guárdelo para el siguiente paso
El formato se ve así:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDx... rsa-key-20241210
Etapa 6 : Configurar PuTTY para usar la clave
- Abra PuTTY
- En el menú de la izquierda, vaya a : Connection → SSH → Auth → Credentials
Sección Credentials en PuTTY
- Haga clic en Browse junto a "Private key file for authentication"
Selección de la clave privada
- Seleccione su archivo
.ppk
Archivo .ppk seleccionado
- Vuelva a Session, ingrese la IP de su VPS y guarde la sesión
🐧 Método 2 : Generar una Clave SSH en Linux/macOS
Etapa 1 : Abrir el Terminal
- Linux : Ctrl+Alt+T o busque "Terminal"
- macOS : Aplicaciones → Utilidades → Terminal
Etapa 2 : Generar el par de claves
Opción A : Clave RSA 4096 bits (compatible universalmente)
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Opción B : Clave Ed25519 (recomendada, más moderna)
ssh-keygen -t ed25519 -C "[email protected]"
Etapa 3 : Seguir las instrucciones
Generando par de claves ed25519 público/privado.
Introduce el archivo donde guardar la clave (/home/usuario/.ssh/id_ed25519):
- Ubicación : Presiona Enter para aceptar la ubicación por defecto (
~/.ssh/id_ed25519)
Introduce la frase de paso (vacío para ninguna frase):
Introduce la misma frase de paso de nuevo:
- Frase de paso : Ingresa una frase secreta (recomendado) o presiona Enter para ninguna
Paso 4 : Verificar la creación
ls -la ~/.ssh/
Deberías ver:
id_ed25519(oid_rsa) - Clave privadaid_ed25519.pub(oid_rsa.pub) - Clave pública
Paso 5 : Mostrar la clave pública
cat ~/.ssh/id_ed25519.pub
Resultado:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... [email protected]
Copia esta línea completa para instalarla en el servidor.
🚀 Instalar la Clave Pública en el VPS
Método 1 : Con ssh-copy-id (Linux/macOS - Recomendado)
El comando ssh-copy-id automatiza la instalación:
ssh-copy-id -i ~/.ssh/id_ed25519.pub usuario@IP_DEL_VPS
Ejemplo:
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]
Deberás ingresar tu contraseña una última vez. Luego, la clave se instalará automáticamente.
Método 2 : Instalación manual
Si ssh-copy-id no está disponible:
Paso 1 : Conéctate al VPS con contraseña
ssh root@IP_DEL_VPS
Paso 2 : Crear el directorio .ssh (si es necesario)
mkdir -p ~/.ssh
chmod 700 ~/.ssh
Paso 3 : Crear/Editar el archivo authorized_keys
nano ~/.ssh/authorized_keys
Paso 4 : Pegar la clave pública
Pega la clave pública copiada anteriormente (en una sola línea).
Para PuTTY, es el contenido de "Clave pública para pegar en el archivo authorized_keys de OpenSSH".
Paso 5 : Guardar y establecer los permisos
chmod 600 ~/.ssh/authorized_keys
Paso 6 : Probar la conexión
Desconéctate y vuelve a conectar:
exit
ssh root@IP_DEL_VPS
Si todo funciona, estarás conectado sin contraseña (o con tu frase de paso si has establecido una).
Método 3 : En un solo comando (desde tu PC local)
cat ~/.ssh/id_ed25519.pub | ssh root@IP_DEL_VPS "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
🔒 Asegurar el Servidor SSH
Una vez configuradas las claves SSH, refuerza la seguridad desactivando la autenticación por contraseña.
Paso 1 : Editar la configuración SSH
sudo nano /etc/ssh/sshd_config
Paso 2 : Modificar los parámetros
Busca y modifica estas líneas:
# Desactivar la autenticación por contraseña
PasswordAuthentication no
# Desactivar contraseñas vacías
PermitEmptyPasswords no
# Activar la autenticación por clave pública
PubkeyAuthentication yes
# Desactivar la autenticación challenge-response
ChallengeResponseAuthentication no
# Opcional : Desactivar la conexión como root (crea un usuario sudo primero)
# PermitRootLogin no
Paso 3 : Reiniciar el servicio SSH
sudo systemctl restart sshd
⚠️ Atención : ¡Mantén abierta una sesión SSH durante las pruebas! Si la configuración es incorrecta, podrías perder el acceso.
🛠️ Gestión de Claves SSH
Agregar varias claves
Puedes autorizar varias claves (varias computadoras, varios usuarios):
nano ~/.ssh/authorized_keys
Agrega una clave por línea.
Eliminar una clave
Edita authorized_keys y elimina la línea correspondiente a la clave.
Cambiar la frase de paso de una clave existente
ssh-keygen -p -f ~/.ssh/id_ed25519
Mostrar la huella digital (fingerprint) de una clave
ssh-keygen -lf ~/.ssh/id_ed25519.pub
🔄 Convertir los Formatos de Claves
PPK a OpenSSH (PuTTY → Linux)
En PuTTYgen:
- Carga tu archivo
.ppkcon Cargar - Ve a Conversiones → Exportar clave OpenSSH
- Guarda el archivo
OpenSSH a PPK (Linux → PuTTY)
En PuTTYgen:
- Ve a Conversiones → Importar clave
- Selecciona tu clave privada OpenSSH (
id_rsaoid_ed25519) - Haz clic en Guardar clave privada
🔧 Solución de Problemas
"Permiso denegado (clave pública)"
Causas posibles :
- Clave pública no instalada en el servidor
- Permisos incorrectos en
.sshoauthorized_keys - Clave privada incorrecta utilizada
Soluciones :
# Verificar los permisos (en el servidor)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
# Verificar que la clave esté en authorized_keys
cat ~/.ssh/authorized_keys
"Conexión rechazada"
Causas posibles :
- Servicio SSH no iniciado
- Cortafuegos bloqueando el puerto 22
Soluciones :
# Verificar el estado de SSH
sudo systemctl status sshd
# Iniciar si es necesario
sudo systemctl start sshd
# Verificar el cortafuegos
sudo ufw status
sudo ufw allow 22
"Error de verificación de clave de host"
El servidor ha cambiado (reinstalación, nueva IP). Elimina la entrada antigua:
ssh-keygen -R IP_DEL_VPS
La frase de paso se solicita en cada conexión
Utiliza ssh-agent para recordar la frase de paso:
# Iniciar el agente
eval "$(ssh-agent -s)"
# Agregar la clave
ssh-add ~/.ssh/id_ed25519
📋 Resumen de Comandos
| Acción | Comando |
|---|---|
| Generar clave RSA 4096 | ssh-keygen -t rsa -b 4096 |
| Generar clave Ed25519 | ssh-keygen -t ed25519 |
| Copiar clave al servidor | ssh-copy-id -i ~/.ssh/id_ed25519.pub usuario@IP |
| Mostrar clave pública | cat ~/.ssh/id_ed25519.pub |
| Probar conexión detallada | ssh -v usuario@IP |
| Cambiar frase de paso | ssh-keygen -p -f ~/.ssh/id_ed25519 |
| Ver huella digital | ssh-keygen -lf ~/.ssh/id_ed25519.pub |
📁 Estructura de Archivos SSH
~/.ssh/
├── authorized_keys # Claves públicas autorizadas (en el servidor)
├── id_ed25519 # Clave privada Ed25519 (en el cliente)
├── id_ed25519.pub # Clave pública Ed25519 (en el cliente)
├── id_rsa # Clave privada RSA (en el cliente)
├── id_rsa.pub # Clave pública RSA (en el cliente)
├── known_hosts # Huellas de los servidores conocidos
└── config # Configuración personalizada (opcional)
Permisos requeridos
| Fichier/Dossier | Permission | Commande |
|---|---|---|
~/.ssh/ |
700 | chmod 700 ~/.ssh |
authorized_keys |
600 | chmod 600 ~/.ssh/authorized_keys |
| Clé privée | 600 | chmod 600 ~/.ssh/id_ed25519 |
| Clé publique | 644 | chmod 644 ~/.ssh/id_ed25519.pub |
💡 Buenas Prácticas
-
Utilice Ed25519 para las nuevas claves (más seguro y eficiente que RSA)
-
Siempre establezca una frase de paso en sus claves privadas
-
Nunca comparta su clave privada - solo la clave pública debe ser copiada
-
Haga copias de seguridad de sus claves en un lugar seguro (gestor de contraseñas, caja fuerte)
-
Utilice claves diferentes para diferentes usos (trabajo, personal, servidores críticos)
-
Desactive la autenticación por contraseña una vez configuradas las claves
-
Audite regularmente el archivo
authorized_keyspara eliminar claves no utilizadas -
Cambie sus claves periódicamente (mínimo cada 1-2 años)
❓ Preguntas Frecuentes
¿Cuál es la diferencia entre RSA y Ed25519?
| Aspecto | RSA | Ed25519 |
|---|---|---|
| Seguridad | Excelente (4096 bits) | Excelente (256 bits) |
| Rendimiento | Más lento | Más rápido |
| Tamaño de clave | Grande | Pequeña |
| Compatibilidad | Universal | Muy buena (post-2014) |
Recomendación: Ed25519 para nuevas implementaciones, RSA para compatibilidad con sistemas antiguos.
¿Puedo usar la misma clave en varios servidores?
Sí, puede instalar la misma clave pública en varios servidores. Sin embargo, para una seguridad óptima, utilice claves diferentes para entornos críticos.
¿Cómo agregar un comentario a mi clave?
El parámetro -C permite agregar un comentario:
ssh-keygen -t ed25519 -C "laptop-trabajo-2024"
¿Las claves SSH caducan?
No, las claves SSH no tienen una fecha de vencimiento incorporada. Depende de usted rotarlas regularmente.

