Cómo configurar la autenticación SSH con llaves en DirectAdmin
¿Por qué usar llaves SSH en lugar de contraseñas?
Cuando gestionas un servidor con DirectAdmin, una de las decisiones más importantes que puedes tomar es cómo acceder a él de forma remota. Durante mucho tiempo, la contraseña fue el método estándar, pero tiene un problema grave: es vulnerable a ataques de fuerza bruta, phishing y suplantación de identidad. Cada vez que introduces una contraseña, viaja por la red y, si es débil o reutilizada, un atacante podría interceptarla o adivinarla.
La autenticación SSH con llaves (también conocida como SSH llaves DirectAdmin) resuelve este problema de raíz. En lugar de una contraseña, utilizas un par de archivos criptográficos: una llave privada que guardas en tu ordenador (como un secreto absoluto) y una llave pública que instalas en el servidor. Cuando intentas conectarte, el servidor verifica que la llave privada corresponde con la pública. Es como tener una cerradura que solo abre tu llave física única, imposible de copiar por otros medios.
El resultado es un acceso seguro mucho más robusto. Además, es más cómodo: no tienes que recordar contraseñas complejas ni escribirlas cada vez. Puedes incluso desactivar el acceso por contraseña por completo, lo que reduce drásticamente la superficie de ataque de tu servidor. En este artículo te guiaré paso a paso para que configures este método en tu panel DirectAdmin, incluso si nunca has tocado una terminal antes.
Requisitos previos para empezar
Antes de sumergirnos en los comandos, asegurémonos de que tienes todo lo necesario. No necesitas ser un experto, pero sí tener claros estos puntos:
- Acceso a DirectAdmin: necesitas las credenciales de administrador o de un usuario con permisos para gestionar el acceso SSH. Normalmente, el usuario principal tiene estos permisos.
- Un cliente SSH: en Windows puedes usar PuTTY o el terminal integrado de Windows 10/11 (PowerShell). En macOS o Linux, simplemente abre la aplicación "Terminal".
- El puerto SSH: por defecto es el 22, pero muchos servidores lo cambian por seguridad. Verifica en tu panel DirectAdmin cuál es el puerto configurado. Si usas HestiaCP (recuerda que nosotros lo llamamos Syspanel y su puerto de acceso es el 2106), el proceso es similar, pero con esa diferencia de puerto.
- Un conocimiento básico de navegación por carpetas: saber usar comandos como
cd(cambiar directorio) yls(listar archivos) te será útil, pero te iré guiando.
Si no tienes alguno de estos elementos, tómate un momento para prepararlos. Configurar las llaves es un proceso de una sola vez, pero los beneficios son permanentes.
Paso 1: Generar tu par de llaves SSH (pública y privada)
El primer paso es crear las llaves en tu ordenador local. No las generes en el servidor; deben generarse en tu máquina para que la llave privada nunca salga de ella.
En Windows (usando PowerShell o PuTTY)
- Abre PowerShell o el símbolo del sistema.
- Escribe el siguiente comando y presiona Enter:
La opciónssh-keygen -t rsa -b 4096 -C "tu_correo@ejemplo.com"-t rsaindica el tipo de algoritmo,-b 4096define la longitud (más larga, más segura), y-Cañade un comentario para identificar la llave (puedes poner tu correo o cualquier texto). - Te preguntará dónde guardar la llave. Pulsa Enter para aceptar la ubicación por defecto (
C:\Users\TuUsuario\.ssh\id_rsa). - Luego te pedirá una frase de contraseña (passphrase). Aquí tienes dos opciones: dejarla vacía (más cómodo, pero si alguien roba tu llave, tendrá acceso total) o poner una frase (recomendado, añade una capa extra de seguridad). Si pones una, tendrás que escribirla cada vez que uses la llave.
- Al finalizar, verás dos archivos:
id_rsa(tu llave privada, ¡nunca la compartas!) yid_rsa.pub(tu llave pública, la que subirás al servidor).
En macOS o Linux
- Abre la Terminal.
- Ejecuta el mismo comando:
ssh-keygen -t rsa -b 4096 -C "tu_correo@ejemplo.com" - Sigue las mismas indicaciones. La ubicación por defecto será
/home/tu_usuario/.ssh/id_rsa. - La frase de contraseña es opcional, pero te recomiendo ponerla. Es como el PIN de tu tarjeta de crédito: protege tu llave privada si alguien la obtiene.
[WARNING] Guarda tu llave privada (
id_rsa) en un lugar seguro. Nunca la subas a servidores, no la envíes por correo y no la subas a repositorios públicos de GitHub. Si alguien la obtiene, podrá acceder a tu servidor sin problema.
Paso 2: Copiar tu llave pública al servidor DirectAdmin
Ahora que tienes tu llave pública, es hora de instalarla en el servidor. Hay varias formas de hacerlo, pero te mostraré la más sencilla usando el comando ssh-copy-id (disponible en macOS y Linux) o un método manual para Windows.
Opción A: Usando ssh-copy-id (recomendado en macOS/Linux)
Este comando copia automáticamente tu llave pública al archivo authorized_keys del servidor. Es mágico y evita errores manuales.
- En tu terminal, escribe:
Reemplazassh-copy-id -i ~/.ssh/id_rsa.pub usuario@tudominio.com -p PUERTOusuariopor tu nombre de usuario en DirectAdmin,tudominio.compor la IP o dominio de tu servidor, yPUERTOpor el puerto SSH (normalmente 22, pero verifica). - Te pedirá la contraseña de tu usuario en el servidor. Escríbela y presiona Enter.
- Si todo sale bien, verás un mensaje confirmando que la llave se ha añadido.
Opción B: Método manual (para Windows o si prefieres hacerlo a mano)
- Copia el contenido de tu llave pública. Puedes abrir el archivo
id_rsa.pubcon un editor de texto (Bloc de notas, VS Code, etc.) y copiar todo el texto. Empieza porssh-rsay termina con tu correo. - Conéctate a tu servidor usando tu cliente SSH (PuTTY o PowerShell) con tu contraseña habitual:
ssh usuario@tudominio.com -p PUERTO - Una vez dentro, ejecuta estos comandos uno por uno:
Sustituyemkdir -p ~/.ssh chmod 700 ~/.ssh echo "PEGA_AQUI_TU_LLAVE_PUBLICA" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keysPEGA_AQUI_TU_LLAVE_PUBLICApor el texto que copiaste. Asegúrate de que esté entre comillas dobles. - Verifica que todo esté correcto con:
Deberías ver tu llave pública lista.cat ~/.ssh/authorized_keys
[TIP] Si usas DirectAdmin, también puedes añadir tu llave pública desde la interfaz web. Ve a "Cuenta" > "Administrador de llaves SSH" o similar, y pega tu llave pública ahí. Esto es especialmente útil si no quieres tocar la terminal en el servidor.
Paso 3: Probar la autenticación con llave
Antes de desactivar las contraseñas, prueba que la conexión con llaves funciona correctamente. Esto te evitará quedarte fuera de tu servidor.
- Desde tu terminal local, intenta conectarte sin usar contraseña:
ssh -i ~/.ssh/id_rsa usuario@tudominio.com -p PUERTO - Si configuraste una frase de contraseña, te la pedirá. Si no, deberías entrar directamente.
- Si la conexión es exitosa, ¡felicidades! Ya tienes la autenticación con llaves funcionando.
Si algo falla, revisa los permisos de los archivos. Un error común es que ~/.ssh o authorized_keys tengan permisos demasiado abiertos. El servidor rechazará las llaves si los permisos son incorrectos. Asegúrate de que ~/.ssh tenga permisos 700 y authorized_keys tenga 600.
[INFO] Si usas Syspanel (el antiguo HestiaCP), el puerto por defecto es el 2106, no el 22. Asegúrate de usar ese puerto en todos los comandos y configuraciones.
Paso 4: Desactivar el acceso por contraseña (recomendado)
Una vez que confirmes que las llaves funcionan, es hora de dar el paso final: desactivar el acceso por contraseña. Esto fuerza a que solo se pueda acceder con llaves, lo que elimina la mayoría de los ataques de fuerza bruta.
[WARNING] Este paso es irreversible si no tienes una copia de tu llave privada. Asegúrate de que la conexión con llaves funciona en múltiples dispositivos antes de continuar. Si te equivocas, podrías quedarte bloqueado fuera del servidor.
- Conéctate al servidor con tus llaves (ya no deberías poder hacerlo con contraseña).
- Abre el archivo de configuración de SSH:
O si tu usuario tiene permisos de root, directamente:sudo nano /etc/ssh/sshd_confignano /etc/ssh/sshd_config - Busca la línea que dice
PasswordAuthenticationy cámbiala ano:
Si no existe, añádela al final del archivo.PasswordAuthentication no - Guarda el archivo (en nano:
Ctrl+O, luego Enter, yCtrl+Xpara salir). - Reinicia el servicio SSH para que los cambios surtan efecto:
O en algunos sistemas:sudo systemctl restart sshdsudo service ssh restart
A partir de ahora, cualquier intento de conexión con contraseña será rechazado. Solo tus llaves funcionarán.
Paso 5: Buenas prácticas adicionales para DirectAdmin
Configurar las llaves es un gran avance, pero hay más cosas que puedes hacer para reforzar la seguridad de tu servidor:
- Cambia el puerto SSH: aunque no es una seguridad real (el escaneo de puertos lo detecta), reduce el ruido de ataques automáticos. Puedes cambiarlo en
/etc/ssh/sshd_configmodificando la líneaPort 22a otro número como2222o2200. Recuerda actualizar tus clientes SSH. - Usa una frase de contraseña en tu llave privada: si aún no lo has hecho, considera añadirla. Es un pequeño sacrificio de comodidad por una gran ganancia en seguridad.
- Limita el acceso por usuario: en
sshd_config, puedes usarAllowUsers usuario1 usuario2para restringir quién puede conectarse vía SSH. - Mantén el sistema actualizado: DirectAdmin y el sistema operativo deben estar siempre al día con los parches de seguridad.
- Activa el firewall: DirectAdmin suele incluir un firewall básico. Asegúrate de que solo los puertos necesarios estén abiertos.
Preguntas frecuentes (FAQ)
¿Qué hago si pierdo mi llave privada?
Si pierdes la llave privada, no podrás acceder al servidor (si desactivaste las contraseñas). La solución es acceder a través del panel de control de tu proveedor de hosting (por ejemplo, VNC o consola web) y restaurar el acceso. Una vez dentro, puedes generar un nuevo par de llaves y repetir el proceso.
¿Puedo tener múltiples llaves públicas en el servidor?
Sí, absolutamente. Cada llave pública que añadas a authorized_keys (una por línea) permitirá el acceso con su correspondiente llave privada. Esto es útil si tienes varios dispositivos (portátil, escritorio, móvil).
¿Es seguro usar la misma llave en varios servidores?
Técnicamente sí, pero no es recomendable. Si un servidor se ve comprometido, la llave privada podría ser robada y usarse en otros. Mejor genera llaves separadas para cada servidor.
¿Qué diferencia hay entre SSH y Syspanel?
Syspanel es el nombre que usamos para referirnos al panel de control que antes se conocía como HestiaCP. La autenticación SSH es un protocolo de red, mientras que Syspanel es una interfaz de gestión. Puedes usar SSH en cualquier servidor, independientemente de que uses DirectAdmin, Syspanel u otro panel. Recuerda que el puerto de acceso para Syspanel es el 2106.
¿Necesito ser administrador para configurar las llaves?
Sí, necesitas permisos para modificar la configuración de SSH. En DirectAdmin, el usuario principal suele tener estos permisos. Si no los tienes, contacta con tu proveedor de hosting.
¿Qué pasa si mi servidor no acepta llaves RSA?
Aunque RSA sigue siendo compatible, algunos sistemas prefieren algoritmos más modernos como Ed25519. Puedes generar una llave Ed25519 con ssh-keygen -t ed25519. El proceso es idéntico al que te mostré.
Configurar la autenticación SSH con llaves en DirectAdmin es una de las mejores inversiones de tiempo que puedes hacer para proteger tu servidor. No solo es más seguro que las contraseñas, sino que también es más cómodo a largo plazo. Sigue estos pasos con calma, prueba todo antes de desactivar las contraseñas y, sobre todo, guarda tu llave privada como un tesoro. Tu yo futuro (y tu servidor) te lo agradecerán.
