Claves SSH en Ubuntu Server - Guía Completa
Introducción
Al iniciar Ubuntu Server por primera vez, es común ver mensajes sobre la generación de claves SSH. Este tutorial explica qué significan esos mensajes y cómo configurar correctamente tu conexión SSH.
🖥️ ¿Qué estás viendo en la pantalla?
La Generación de Claves del Servidor
Generating public/private rsa key pair.
Generating public/private ed25519 key pair.
Generating public/private ecdsa key pair.Esto NO son tus claves personales - son las "huellas digitales" del servidor generadas automáticamente por cloud-init.
🔑 Entendiendo los Dos Tipos de Claves SSH
1. Claves del Servidor (Host Keys)
¿Quién las usa? El servidor
¿Dónde están?
/etc/ssh/¿Para qué sirven? Identificar que el servidor es auténtico
2. Claves del Usuario (User Keys)
¿Quién las usa? Tú (el usuario)
¿Dónde están?
~/.ssh/en tu computadora¿Para qué sirven? Autenticarte sin contraseña
🚀 Guía Paso a Paso: Configurar Tu Conexión SSH
Paso 1: Generar Tus Claves Personales
En tu computadora local (NO en el servidor):
ssh-keygen -t ed25519Cuando te pregunte:
Enter file in which to save the key (/home/tu_usuario/.ssh/id_ed25519):✅ Presiona Enter para aceptar la ubicación por defecto.
Resultado:
~/.ssh/id_ed25519→ Tu clave PRIVADA (¡NO la compartas!)~/.ssh/id_ed25519.pub→ Tu clave PÚBLICA
Paso 2: Copiar Tu Clave Pública al Servidor
Método recomendado (más fácil):
ssh-copy-id ubuntu@IP_DEL_SERVIDORSi no tienes ssh-copy-id, usa este comando:
cat ~/.ssh/id_ed25519.pub | ssh ubuntu@IP_DEL_SERVIDOR "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"Paso 3: Conectarte Sin Contraseña
ssh ubuntu@IP_DEL_SERVIDOR¡Ahora deberías conectarte automáticamente sin necesidad de contraseña!
📊 Tabla Resumen
| Tipo de Clave | Ejemplos | ¿Quién la usa? | Ubicación | Propósito |
|---|---|---|---|---|
| Host Key | RSA, ED25519, ECDSA | El servidor | /etc/ssh/ | Identificar al servidor |
| User Key | id_ed25519, id_rsa | Tú (usuario) | ~/.ssh/ en tu PC | Conectarte sin contraseña |
🛠️ Configuraciones Específicas por Plataforma
Para Máquinas Virtuales (VirtualBox/VMware):
Asegúrate de que la red esté en modo Bridge o NAT con redirección de puertos
Verifica que el servidor tenga IP accesible desde tu máquina host
Para Nube (AWS, DigitalOcean, Azure):
Descarga el archivo de clave
.pemque te proporcionanConéctate usando:
ssh -i clave.pem ubuntu@IP_DEL_SERVIDORLuego copia tu clave pública personal como se explicó arriba
Para Servidores Locales:
Asegúrate de estar en la misma red
Verifica que el firewall permita conexiones SSH (puerto 22)
🔒 Mejores Prácticas de Seguridad
1. Protege Tu Clave Privada
chmod 600 ~/.ssh/id_ed255192. Desactiva Login con Contraseña (Opcional avanzado)
En /etc/ssh/sshd_config del servidor:
PasswordAuthentication no3. Usa Puertos No Estándar (Opcional)
ssh -p 2222 ubuntu@IP_DEL_SERVIDOR❌ Solución de Problemas Comunes
"Permission denied (publickey)"
Verifica que copiaste la clave pública correcta
Confirma los permisos:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
"Host key verification failed"
Elimina la entrada conflictiva:
ssh-keygen -R IP_DEL_SERVIDOR
No puedes conectarte
Verifica la IP del servidor
Confirma que el servicio SSH está corriendo:
sudo systemctl status ssh
✅ Checklist Final
El servidor generó sus claves automáticamente
Generaste tus claves personales con
ssh-keygenCopiaste tu clave pública con
ssh-copy-idPuedes conectarte sin contraseña
Tu clave privada está protegida
Instalar el servidor SSH (si no está instalado)
sudo apt update
sudo apt install openssh-server2. Verificar el estado del servicio
sudo systemctl status ssh3. Iniciar el servicio SSH
sudo systemctl start ssh4. Habilitar el inicio automático
sudo systemctl enable ssh5. Verificar que esté escuchando
sudo systemctl status ssh
# o
sudo netstat -tulpn | grep :226. Configurar el firewall (si está activo)
sudo ufw allow ssh
# o específicamente para el puerto 22
sudo ufw allow 22/tcpConfiguración adicional (opcional)
Cambiar puerto predeterminado
Edita el archivo de configuración:
sudo nano /etc/ssh/sshd_configBusca la línea #Port 22 y cámbiala por ejemplo a Port 2222
Reiniciar el servicio después de cambios
sudo systemctl restart sshVerificar conexión desde otro equipo
ssh usuario@ip_del_servidorNota: Asegúrate de conocer la IP de tu equipo Ubuntu con ip a o hostname -I.
Comentarios
Publicar un comentario