Descripción general
Este artículo explica los pasos de configuración del cliente para conectarse de forma segura a un servidor mediante autenticación SSH con clave pública. Está dirigido a entornos Windows y Linux.
Requisitos previos
- El cliente SSH ya está instalado (Windows 10 o posterior, Linux estándar)
- El servidor SSH permite la autenticación por clave pública
- Existe una cuenta de usuario en el servidor
Tipos de claves y métodos de cifrado
Los tipos de claves más comunes usados en SSH son RSA, ECDSA y Ed25519. La siguiente tabla compara sus características, usos recomendados y compatibilidad.
| Tipo de clave | Características | Uso recomendado | Compatibilidad |
|---|---|---|---|
| RSA | Muy usada y ampliamente compatible; longitud de clave ajustable | Entornos con sistemas antiguos | Muy alta |
| ECDSA | Usa criptografía de curva elíptica, más rápida con claves más cortas | Entornos con énfasis en rendimiento | Media |
| Ed25519 | Nuevo estándar, rápido y muy seguro, tamaño pequeño | Nuevas implementaciones y alta seguridad | Alta (OpenSSH ≥ 6.5) |
Ed25519 es el estándar moderno recomendado. RSA sigue siendo útil por compatibilidad; ECDSA es un punto intermedio.
Convenciones de variables
| Variable | Ejemplo | Descripción |
|---|---|---|
<<USERNAME>> |
exampleuser |
Nombre del usuario local |
<<SERVER>> |
192.168.1.10 |
Dirección o IP del servidor |
<<USER>> |
ubuntu o ec2-user |
Usuario SSH en el servidor |
<<EMAIL_ADDRESS>> |
user@example.com |
Comentario opcional para la clave |
Nota sobre Windows
Los comandos para Windows están pensados para PowerShell.
Si se usacmd.exe, reemplace$env:USERPROFILEpor%USERPROFILE%.
Cliente Windows
Paso 1: Generar claves
Ejecutar PowerShell como administrador:
ssh-keygen -t ed25519 -C "<<EMAIL_ADDRESS>>"
Ejemplo de salida:
Generating public/private ed25519 key pair.
Your identification has been saved in /C:/Users/<<USERNAME>>/.ssh/id_ed25519
Your public key has been saved in /C:/Users/<<USERNAME>>/.ssh/id_ed25519.pub
Clave pública:
$env:USERPROFILE\.ssh\id_ed25519.pub
Clave privada:$env:USERPROFILE\.ssh\id_ed25519
Paso 2: Copiar clave al servidor
cat $env:USERPROFILE\.ssh\id_ed25519.pub | ssh <<USER>>@<<SERVER>> "mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys"
O copiar manualmente el contenido en ~/.ssh/authorized_keys en el servidor.
Paso 3: Verificar conexión
ssh -i $env:USERPROFILE\.ssh\id_ed25519 <<USER>>@<<SERVER>>
Cliente Linux
Paso 1: Generar claves
ssh-keygen -t ed25519 -C "<<EMAIL_ADDRESS>>"
Salida esperada:
Enter file in which to save the key (/home/<<USERNAME>>/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Clave pública:
~/.ssh/id_ed25519.pub
Clave privada:~/.ssh/id_ed25519
Paso 2: Registrar clave en el servidor
ssh-copy-id -i ~/.ssh/id_ed25519.pub <<USER>>@<<SERVER>>
O editar manualmente ~/.ssh/authorized_keys.
Paso 3: Verificar conexión
ssh -i ~/.ssh/id_ed25519 <<USER>>@<<SERVER>>
Uso de claves con frase de contraseña
Si la clave privada tiene una frase, configure un agente SSH para evitar introducirla cada vez.
Paso 1: Iniciar agente
Windows:
Set-Service -Name ssh-agent -StartupType Manual
Start-Service ssh-agent
Linux:
eval "$(ssh-agent -s)"
Para inicio automático:
Windows:
Set-Service -Name ssh-agent -StartupType Automatic
Linux:
Agregar en ~/.bashrc:
eval "$(ssh-agent -s)" > /dev/null
Paso 2: Registrar clave
Windows:
ssh-add $env:USERPROFILE\.ssh\id_ed25519
Linux:
ssh-add ~/.ssh/id_ed25519
Paso 3: Confirmar registro
ssh-add -l
Configuración del archivo config del cliente SSH
Para simplificar conexiones, cree el archivo ~/.ssh/config (en Windows: C:\Users\<<USERNAME>>\.ssh\config):
Host myserver
HostName <<SERVER>>
User <<USER>>
IdentityFile ~/.ssh/id_ed25519
Port 22
En Windows use
$env:USERPROFILE\.ssh\id_ed25519.
Con esto, bastará ejecutar:
ssh myserver
Múltiples servidores
Host web
HostName 192.168.1.10
User ubuntu
IdentityFile ~/.ssh/id_ed25519
Host db
HostName 192.168.1.11
User ec2-user
IdentityFile ~/.ssh/id_ed25519
Se recomienda usar diferentes claves por servidor cuando sea posible.
Verificación
Use salida detallada para depuración:
ssh -vvv -i ~/.ssh/id_ed25519 <<USER>>@<<SERVER>>
Authentication succeeded (publickey) indica éxito.
Solución de problemas
-
Autenticación por clave deshabilitada en el servidor
RevisePubkeyAuthentication yesensshd_config. -
Clave no registrada o incorrecta
Verifique que la clave pública esté en~/.ssh/authorized_keys. -
Datos de conexión erróneos
Asegúrese de usar el usuario, host y permisos correctos.
Conclusión
La autenticación SSH con clave pública permite conexiones seguras sin contraseñas.
Tanto en Windows como en Linux, ssh-keygen y una configuración correcta de permisos garantizan seguridad y eficiencia.
