CreaRack-SL

Hetzner SSH Key Setup

Hetzner SSH Key Setup

OS: Ubuntu 24.04.4 LTS Última actualización: 07-04-2026


Servidores

EntornoIPHostnameTipo
Producción116.203.31.166crearack.comCCX — 4 vCPU, 16GB RAM
Staging178.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):

  1. Ir a Hetzner Cloud Console → Servers → crearack-prod → Console
  2. 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
  3. Desde PowerShell del nuevo PC:
    type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@116.203.31.166 "cat >> /root/.ssh/authorized_keys"
    (Pedirá la contraseña de root que acabas de crear)
  4. 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

ArchivoContenido
/etc/ssh/sshd_config.d/root.confPermitRootLogin yes + PasswordAuthentication no
/root/.ssh/authorized_keysClaves 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 en authorized_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 o ssh-copy-id desde Linux/Mac

Scripts de Mantenimiento

Los scripts .bat en scripts/ usan esta conexión SSH:

ScriptFunciónModifica
HETZNER_ESTADO.batDiagnóstico: disco, memoria, Docker, logs, uptimeNo (solo lectura)
HETZNER_LIMPIAR.batLimpieza: Docker prune, logs, journalSí (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 de authorized_keys y generar un nuevo par
  • Revocar acceso: Editar /root/.ssh/authorized_keys y 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