Hetzner SSH Key Setup
OS: Ubuntu 24.04.4 LTS Última actualización: 07-04-2026
Servidores
| Entorno | IP | Hostname | Tipo |
|---|---|---|---|
| Producción | 116.203.31.166 | crearack.com | CCX — 4 vCPU, 16GB RAM |
| Staging | 178.104.131.173 | — | CX23 — 1 vCPU, 4GB RAM |
Conexión Actual
# Producción (cualquiera de las dos formas)
ssh root@crearack.com
ssh root@116.203.31.166
# Staging
ssh root@178.104.131.173
- Autenticación: Clave pública Ed25519 (sin contraseña)
- Puerto: 22
- Usuario: root
- Clave local:
C:\Users\edudo\.ssh\id_ed25519/id_ed25519.pub
Configuración SSH Recomendada (~/.ssh/config)
Añadir a C:\Users\edudo\.ssh\config para usar alias cortos:
Host crearack-prod
HostName 116.203.31.166
User root
IdentityFile ~/.ssh/id_ed25519
Host crearack-staging
HostName 178.104.131.173
User root
IdentityFile ~/.ssh/id_ed25519
Con esta config puedes conectar con:
ssh crearack-prod
ssh crearack-staging
Configurar SSH en un Nuevo Ordenador
1. Generar par de claves
ssh-keygen -t ed25519 -C "tu-email@ejemplo.com"
Esto crea:
C:\Users\TU_USUARIO\.ssh\id_ed25519(clave privada — NUNCA compartir)C:\Users\TU_USUARIO\.ssh\id_ed25519.pub(clave pública)
2. Copiar la clave pública al servidor
Opción A — Desde un PC que ya tiene acceso SSH:
# Producción
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@116.203.31.166 "cat >> /root/.ssh/authorized_keys"
# Staging
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@178.104.131.173 "cat >> /root/.ssh/authorized_keys"
Nota: Usar
>>(append) para no borrar claves existentes.
Opción B — Sin acceso SSH previo (consola web Hetzner):
- Ir a Hetzner Cloud Console → Servers → crearack-prod → Console
- Habilitar temporalmente login con contraseña:
sudo su echo "PasswordAuthentication yes" > /etc/ssh/sshd_config.d/root.conf echo "PermitRootLogin yes" >> /etc/ssh/sshd_config.d/root.conf passwd root systemctl stop ssh && systemctl start ssh - Desde PowerShell del nuevo PC:
(Pedirá la contraseña de root que acabas de crear)type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@116.203.31.166 "cat >> /root/.ssh/authorized_keys" - Deshabilitar login con contraseña:
sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config.d/root.conf systemctl restart ssh
3. Verificar conexión
# Producción
ssh root@116.203.31.166
# Staging
ssh root@178.104.131.173
Debe conectar sin pedir contraseña.
Configuración SSH del Servidor
| Archivo | Contenido |
|---|---|
/etc/ssh/sshd_config.d/root.conf | PermitRootLogin yes + PasswordAuthentication no |
/root/.ssh/authorized_keys | Claves públicas autorizadas |
Permisos requeridos:
/root/.ssh/ → 700 (drwx------)
/root/.ssh/authorized_keys → 600 (-rw-------)
Troubleshooting
“Connection timed out”
- SSH puede perder el listener tras un restart. Solución desde la consola web de Hetzner:
systemctl stop ssh && systemctl start ssh - Verificar que el puerto 22 responde:
Test-NetConnection 116.203.31.166 -Port 22
“Permission denied (publickey)”
- Verificar que la clave pública completa está en
authorized_keys(debe terminar en el email) - Verificar permisos (700 en
.ssh/, 600 enauthorized_keys) - Comparar claves:
# En tu PC cat ~/.ssh/id_ed25519.pub# En el servidor cat /root/.ssh/authorized_keys
La consola web de Hetzner corta texto al pegar
- No usar la consola web para pegar claves — los caracteres se corrompen
- Usar siempre
type ... | ssh ...desde PowerShell ossh-copy-iddesde Linux/Mac
Scripts de Mantenimiento
Los scripts .bat en scripts/ usan esta conexión SSH:
| Script | Función | Modifica |
|---|---|---|
HETZNER_ESTADO.bat | Diagnóstico: disco, memoria, Docker, logs, uptime | No (solo lectura) |
HETZNER_LIMPIAR.bat | Limpieza: Docker prune, logs, journal | Sí (pide confirmación) |
Seguridad
- Contraseña deshabilitada: Solo se puede acceder con clave pública
- Clave privada: Nunca compartir
id_ed25519(sin.pub). Si se compromete, eliminar la clave pública deauthorized_keysy generar un nuevo par - Revocar acceso: Editar
/root/.ssh/authorized_keysy eliminar la línea de la clave a revocar
Véase también
- [[crearack-tech—admin—server-management]] — gestión global de servidores
- [[crearack-tech—admin—dokploy-guide]] — guía operativa de Dokploy
- [[crearack-tech—admin—monitoring-tools]] — herramientas admin de monitorización
- [[crearack-tech—guides—production-deployment]] — deployment en producción
- [[crearack-tech—guides—security-guide]] — guía de seguridad