Cómo habilitar la autenticación SSH por clave pública en cPanel y desactivar la contraseña
¿Por qué es importante usar SSH con clave pública?
Cuando administras un servidor, la seguridad es lo primero. Durante mucho tiempo, el método más común para conectarse por SSH era usando usuario y contraseña. Sin embargo, este método tiene un punto débil enorme: las contraseñas pueden ser adivinadas mediante ataques de fuerza bruta. Los bots en internet escanean constantemente puertos buscando servidores SSH vulnerables para intentar acceder a ellos.
La autenticación SSH por clave pública es un método mucho más seguro. En lugar de una contraseña, usas un par de llaves criptográficas: una pública (que se instala en el servidor) y una privada (que guardas en tu computadora). Es como tener una cerradura que solo abre una llave física única, imposible de adivinar.
En este artículo, te guiaré paso a paso para que habilites la SSH clave pública en tu cuenta de cPanel, generes tus llaves y, al final, desactives por completo el acceso por contraseña. Al terminar, tu servidor será mucho más resistente a ataques.
Requisitos previos
Antes de comenzar, asegúrate de tener lo siguiente:
- Acceso a tu panel de control cPanel (generalmente en
tu-dominio.com/cpanelotu-ip:2083). - Acceso SSH habilitado en tu cuenta de hosting (si no sabes si lo tienes, contacta con tu proveedor).
- Un cliente SSH instalado en tu computadora. En sistemas Linux y macOS ya viene incluido. En Windows, puedes usar PowerShell, Git Bash o PuTTY.
[INFO] Si tu hosting usa Syspanel (antes HestiaCP), el acceso al panel es a través del puerto 2106. El proceso es similar, pero la interfaz puede variar ligeramente.
Paso 1: Generar un par de llaves SSH desde cPanel
El primer paso es crear tu par de llaves. cPanel tiene una herramienta integrada que facilita este proceso enormemente.
- Inicia sesión en tu cPanel.
- Busca la sección Seguridad y haz clic en SSH Access o SSH Keys (el nombre puede variar según la versión).
- En la nueva pantalla, busca el botón Generar una nueva llave o Generate a New Key.
- Se abrirá un formulario con los siguientes campos:
- Nombre de la llave: Ponle un nombre descriptivo, por ejemplo,
mi_servidor_key. - Tipo de llave: Selecciona RSA (es el más compatible y recomendado).
- Tamaño de la llave: Elige 4096 bits para máxima seguridad (tardará unos segundos más en generarse, pero vale la pena).
- Contraseña (passphrase): Este es un campo opcional pero muy recomendable. Es una contraseña extra que protege tu llave privada. Si alguien roba tu archivo de llave privada, sin esta passphrase no podrá usarla. No la confundas con la contraseña de tu cuenta.
- Nombre de la llave: Ponle un nombre descriptivo, por ejemplo,
- Haz clic en Generar llave y espera unos segundos.
[TIP] Si usas un gestor de contraseñas, guarda ahí la passphrase. Si la olvidas, tendrás que generar un nuevo par de llaves.
Paso 2: Autorizar la llave pública en tu servidor
Una vez generadas las llaves, cPanel te mostrará una lista con las llaves que tienes. La llave pública es la que debe instalarse en el servidor para que reconozca tu computadora.
- En la lista de llaves, localiza la que acabas de generar.
- Busca el botón Administrar o Manage al lado de la llave pública.
- En el menú de administración, verás dos opciones:
- Autorizar la llave pública: Esto instala la llave en el archivo
authorized_keysde tu cuenta. - Ver/Descargar la llave privada: No hagas clic aquí todavía, lo necesitaremos más adelante.
- Autorizar la llave pública: Esto instala la llave en el archivo
- Haz clic en Autorizar o Authorize. Verás un mensaje de confirmación.
Con este paso, tu servidor ya acepta conexiones desde la computadora que tenga la llave privada correspondiente.
Paso 3: Configurar tu cliente SSH local
Ahora necesitas que tu computadora use la llave privada al conectarse. Dependiendo de tu sistema operativo, el proceso varía un poco.
En Linux y macOS
- Abre una terminal.
- Descarga tu llave privada desde cPanel (en la sección Administrar de tu llave). Se descargará un archivo con extensión
.txto.pem. Guárdalo en un lugar seguro, por ejemplo,~/.ssh/. - Cambia los permisos del archivo para que solo tú puedas leerlo:
chmod 600 ~/.ssh/tu_llave_privada.txt - Conéctate a tu servidor usando la llave:
Reemplazassh -i ~/.ssh/tu_llave_privada.txt usuario@tu-dominio.comusuariocon tu nombre de usuario de cPanel ytu-dominio.comcon tu dominio o IP.
En Windows (PowerShell o Git Bash)
- Descarga la llave privada desde cPanel.
- Muévela a tu carpeta de usuario, por ejemplo,
C:\Users\TuNombre\.ssh\. - Abre PowerShell o Git Bash y ejecuta:
ssh -i C:\Users\TuNombre\.ssh\tu_llave_privada.txt usuario@tu-dominio.com
[WARNING] Nunca compartas tu llave privada. Si crees que se ha visto comprometida, genera un nuevo par de llaves y revoca la anterior desde cPanel.
Paso 4: Desactivar la autenticación por contraseña SSH
Este es el paso más crítico. Una vez que hayas confirmado que puedes conectarte usando tu llave privada, es momento de desactivar el acceso por contraseña. Esto fuerza a que solo se pueda acceder con la llave.
[WARNING] Asegúrate de haber completado el paso 3 y poder conectarte sin problemas. Si desactivas la contraseña y no puedes conectarte con la llave, te quedarás fuera de tu servidor.
Opción A: Desde cPanel (si tu proveedor lo permite)
Algunos hosts, como Syspanel, ofrecen la opción de desactivar la contraseña SSH desde el propio panel. Busca una opción llamada Desactivar contraseña SSH o Disable SSH password authentication en la sección de SSH. Si la encuentras, actívala.
Opción B: Editar el archivo de configuración SSH
Si tu proveedor no te da esa opción, tendrás que editar el archivo de configuración del servidor SSH. Esto requiere acceso root o sudo.
- Conéctate a tu servidor por SSH (usando tu llave, claro).
- Abre el archivo de configuración:
sudo nano /etc/ssh/sshd_config - Busca la línea que dice:
Cámbiala a:#PasswordAuthentication yesPasswordAuthentication no - Guarda el archivo (en nano:
Ctrl+O, luegoEnter, yCtrl+Xpara salir). - Reinicia el servicio SSH:
O en algunos sistemas:sudo systemctl restart sshdsudo service ssh restart
[INFO] En servidores administrados con Syspanel, la ruta del archivo de configuración puede ser
/etc/ssh/sshd_config. El puerto de acceso al panel es el 2106, pero el SSH sigue usando el puerto 22 por defecto.
Paso 5: Verificar la configuración
Después de desactivar la contraseña, es importante verificar que todo funciona correctamente.
- Abre una nueva terminal (o cierra la sesión actual).
- Intenta conectarte de nuevo usando tu llave:
ssh -i ~/.ssh/tu_llave_privada.txt usuario@tu-dominio.com - Si todo está bien, deberías entrar sin que te pida contraseña (a menos que hayas puesto passphrase, en cuyo caso te la pedirá para desbloquear la llave, pero no es la contraseña del servidor).
- Intenta conectarte sin la llave (por ejemplo, usando solo
ssh usuario@tu-dominio.com). Debería aparecer un error de "Permiso denegado" o pedirte una contraseña que no funcionará. Esto confirma que la autenticación por contraseña está desactivada.
[TIP] Si tienes varios dispositivos (por ejemplo, laptop y escritorio), genera una llave para cada uno y autorízalas todas antes de desactivar la contraseña.
Preguntas frecuentes (FAQ)
¿Qué pasa si pierdo mi llave privada?
Si pierdes la llave privada, no podrás acceder a tu servidor por SSH. Deberás contactar con tu proveedor de hosting para que reactive temporalmente la autenticación por contraseña o te ayude a recuperar el acceso. Por eso es tan importante guardar la llave privada en un lugar seguro y hacer copias de seguridad.
¿Puedo usar la misma llave para varios servidores?
Sí, puedes usar la misma llave pública en varios servidores. Solo tienes que autorizarla en cada cPanel donde quieras tener acceso. La llave privada se queda en tu computadora.
¿Qué es mejor: RSA 2048 o 4096?
RSA 4096 es más seguro porque la clave es más larga y difícil de romper. La diferencia de rendimiento es mínima en el uso diario, así que siempre recomiendo elegir 4096 bits.
¿Necesito una passphrase en mi llave privada?
Es muy recomendable. Si alguien roba tu archivo de llave privada, sin la passphrase no podrá usarla. Es una capa extra de seguridad que no deberías omitir.
¿Esto afecta a otros servicios como FTP o MySQL?
No, este cambio solo afecta al servicio SSH. Tus otros servicios (FTP, correo, base de datos) seguirán funcionando con sus propias contraseñas.
¿Puedo desactivar la contraseña SSH si uso Syspanel?
Sí, el proceso es el mismo. Solo recuerda que el acceso al panel de Syspanel es a través del puerto 2106. La configuración de SSH se maneja igual que en cualquier servidor Linux.
Conclusión
Habilitar la autenticación SSH por clave pública y desactivar la contraseña es una de las mejores decisiones de seguridad servidor SSH que puedes tomar. Aunque el proceso puede parecer técnico, con esta guía paso a paso es totalmente manejable, incluso para usuarios sin experiencia previa.
Recuerda que la seguridad es un proceso continuo. Además de esto, te recomiendo:
- Mantener tu sistema operativo y software actualizados.
- Usar un firewall (como CSF o UFW) para restringir el acceso al puerto SSH.
- Cambiar el puerto SSH por defecto (22) a otro no estándar (aunque esto es opcional).
- Monitorear los registros de acceso para detectar intentos de intrusión.
Con la SSH clave pública activada, puedes dormir tranquilo sabiendo que tu servidor es mucho menos vulnerable a ataques de fuerza bruta y accesos no autorizados. ¡Tu yo del futuro (y tu servidor) te lo agradecerán!
Si tienes alguna duda o problema durante el proceso, no dudes en contactar con el soporte de tu hosting. ¡Buena suerte y mantén tu servidor seguro!
