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

bash
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):

bash
ssh-keygen -t ed25519

Cuando te pregunte:

text
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):

bash
ssh-copy-id ubuntu@IP_DEL_SERVIDOR

Si no tienes ssh-copy-id, usa este comando:

bash
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

bash
ssh ubuntu@IP_DEL_SERVIDOR

¡Ahora deberías conectarte automáticamente sin necesidad de contraseña!


📊 Tabla Resumen

Tipo de ClaveEjemplos¿Quién la usa?UbicaciónPropósito
Host KeyRSA, ED25519, ECDSAEl servidor/etc/ssh/Identificar al servidor
User Keyid_ed25519, id_rsaTú (usuario)~/.ssh/ en tu PCConectarte 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 .pem que te proporcionan

  • Conéctate usando: ssh -i clave.pem ubuntu@IP_DEL_SERVIDOR

  • Luego 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

bash
chmod 600 ~/.ssh/id_ed25519

2. Desactiva Login con Contraseña (Opcional avanzado)

En /etc/ssh/sshd_config del servidor:

text
PasswordAuthentication no

3. Usa Puertos No Estándar (Opcional)

bash
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-keygen

  • Copiaste tu clave pública con ssh-copy-id

  • Puedes conectarte sin contraseña

  • Tu clave privada está protegida

 Instalar el servidor SSH (si no está instalado)

bash
sudo apt update
sudo apt install openssh-server

2. Verificar el estado del servicio

bash
sudo systemctl status ssh

3. Iniciar el servicio SSH

bash
sudo systemctl start ssh

4. Habilitar el inicio automático

bash
sudo systemctl enable ssh

5. Verificar que esté escuchando

bash
sudo systemctl status ssh
# o
sudo netstat -tulpn | grep :22

6. Configurar el firewall (si está activo)

bash
sudo ufw allow ssh
# o específicamente para el puerto 22
sudo ufw allow 22/tcp

Configuración adicional (opcional)

Cambiar puerto predeterminado

Edita el archivo de configuración:

bash
sudo nano /etc/ssh/sshd_config

Busca la línea #Port 22 y cámbiala por ejemplo a Port 2222

Reiniciar el servicio después de cambios

bash
sudo systemctl restart ssh

Verificar conexión desde otro equipo

bash
ssh usuario@ip_del_servidor

Nota: Asegúrate de conocer la IP de tu equipo Ubuntu con ip a o hostname -I.

Comentarios

Entradas más populares de este blog

ejercicios-Crear Carpeta y Archivo de Texto en Ubuntu

Instalar Docker en Ubuntu Server usando docker.io

Tutorial de Carpetas y Directorios en Ubuntu Linux