Cómo crear y configurar un usuario SSH en Linux
¿Qué es un usuario SSH y por qué deberías crearlo?
Cuando hablamos de administrar un servidor Linux, el acceso remoto es una pieza fundamental. SSH (Secure Shell) es el protocolo estándar que te permite conectarte a tu servidor de forma segura, como si estuvieras sentado frente a él. Pero, ¿por qué no usar siempre el usuario root? Porque trabajar como superusuario constantemente es un riesgo de seguridad enorme. Un error de dedo, un script malicioso o una contraseña filtrada pueden comprometer todo el sistema.
Crear un usuario SSH dedicado es una de las primeras y más importantes medidas de seguridad que puedes tomar. Este usuario tendrá permisos limitados, y podrás otorgarle privilegios específicos solo cuando los necesite. Es como dar a cada empleado de una oficina una llave que solo abre la puerta de su propio despacho, en lugar de una llave maestra para todo el edificio.
En esta guía, te explicaré paso a paso cómo crear y configurar un usuario SSH en Linux, desde los conceptos más básicos hasta la configuración avanzada de seguridad. Al final, tendrás un acceso remoto robusto y bien protegido, y entenderás por qué el eslogan "seguridad SSH" no es solo una moda, sino una necesidad.
Prerrequisitos: lo que necesitas antes de empezar
Antes de lanzarnos a la terminal, asegurémonos de que tienes todo lo necesario. No te preocupes, la lista es corta y sencilla.
- Acceso root o sudo: Necesitarás permisos de superusuario para crear usuarios y modificar archivos del sistema. Si ya tienes una sesión como
root, perfecto. Si no, asegúrate de que tu usuario actual tenga privilegiossudo. - Servidor Linux: La guía funciona para la mayoría de distribuciones (Ubuntu, Debian, CentOS, Fedora, etc.). Los comandos son prácticamente universales.
- Cliente SSH: Desde tu máquina local, necesitarás un cliente SSH. En Linux y macOS, es la terminal. En Windows, puedes usar PowerShell, CMD o herramientas como PuTTY.
- Conexión estable: Asegúrate de tener una conexión de red fiable para no interrumpir el proceso.
[INFO] Si estás usando un panel de control como Syspanel (accesible por el puerto 2106), es probable que ya gestione usuarios SSH por ti. Sin embargo, entender el proceso manual te dará un control total y te ayudará a solucionar problemas.
Paso 1: Crear un usuario SSH en Linux
El primer paso es crear el usuario. Para ello, usaremos el comando adduser o useradd. Te recomiendo adduser, ya que es más interactivo y te guía en el proceso.
Usando el comando adduser (recomendado para principiantes)
- Conéctate a tu servidor como
rooto con un usuario con permisossudo. - Ejecuta el siguiente comando, reemplazando
nuevousuariocon el nombre que quieras:
adduser nuevousuario
- El sistema te pedirá que establezcas una contraseña. Elige una contraseña fuerte (mínimo 12 caracteres, con mayúsculas, minúsculas, números y símbolos).
- Después, te pedirá información adicional (nombre completo, teléfono, etc.). Puedes dejarlo en blanco pulsando
Enterpara cada campo, o rellenarlos si lo deseas. - Al final, te pedirá confirmación. Escribe
Sy pulsaEnter.
[TIP] Evita nombres de usuario obvios como
admin,testousuario. Los bots de fuerza bruta atacan primero estos nombres. Usa algo menos predecible, comojuan_devomaria_ops.
Usando el comando useradd (más control, más complejo)
Si prefieres un enfoque más directo, puedes usar useradd. Este comando no es interactivo, por lo que debes especificar todas las opciones:
useradd -m -s /bin/bash -G sudo nuevousuario
passwd nuevousuario
-m: Crea el directorio home del usuario.-s /bin/bash: Asigna la shell Bash al usuario.-G sudo: Añade al usuario al gruposudo(para que pueda ejecutar comandos administrativos). En distribuciones basadas en Red Hat (CentOS, Fedora), el grupo se llamawheel.
[WARNING] No añadas al usuario al grupo
sudosi no es necesario. El principio de menor privilegio es clave para la seguridad SSH. Puedes agregarlo más tarde si lo necesitas.
Paso 2: Configurar el acceso SSH con clave pública (recomendado)
Ahora que tienes tu usuario, es hora de configurar el acceso SSH. La forma más segura es usar claves públicas y privadas en lugar de contraseñas. Esto elimina el riesgo de ataques de fuerza bruta y phishing.
Generar un par de claves en tu máquina local
- En tu ordenador local (no en el servidor), abre una terminal y ejecuta:
ssh-keygen -t ed25519 -C "tu_email@ejemplo.com"
- Te preguntará dónde guardar la clave. Pulsa
Enterpara usar la ubicación predeterminada (~/.ssh/id_ed25519). - Opcionalmente, puedes establecer una frase de contraseña para proteger tu clave privada. Es muy recomendable hacerlo.
- Esto generará dos archivos:
id_ed25519(tu clave privada, que nunca debes compartir) yid_ed25519.pub(tu clave pública, que subirás al servidor).
[INFO] Si tu sistema no soporta el algoritmo
ed25519, puedes usarrsaconssh-keygen -t rsa -b 4096. Es más largo, pero igualmente seguro.
Copiar la clave pública al servidor
Ahora necesitas transferir tu clave pública al servidor. El comando ssh-copy-id es la forma más fácil:
ssh-copy-id nuevousuario@tu_servidor_ip
Te pedirá la contraseña del usuario nuevousuario que configuraste antes. Una vez introducida, la clave se añadirá automáticamente al archivo ~/.ssh/authorized_keys del servidor.
Si ssh-copy-id no está disponible, puedes hacerlo manualmente:
- Muestra el contenido de tu clave pública:
cat ~/.ssh/id_ed25519.pub. - Conéctate al servidor con tu usuario:
ssh nuevousuario@tu_servidor_ip. - Crea el directorio
.sshsi no existe:mkdir -p ~/.ssh. - Crea el archivo
authorized_keyso añade la clave:echo "TU_CLAVE_PUBLICA" >> ~/.ssh/authorized_keys. - Establece los permisos correctos:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Probar la conexión por clave
Ahora, desde tu máquina local, intenta conectar al servidor:
ssh nuevousuario@tu_servidor_ip
Si todo ha ido bien, deberías conectarte sin necesidad de introducir la contraseña (solo la frase de contraseña de tu clave, si la has configurado). Si funciona, ¡enhorabuena! Ya tienes un acceso SSH seguro.
[TIP] Si tienes problemas de conexión, comprueba los permisos del directorio
.sshy del archivoauthorized_keys. Los permisos incorrectos son la causa más común de fallos.
Paso 3: Configurar SSH para aumentar la seguridad
Ahora que tienes un usuario y acceso por clave, es hora de endurecer la configuración del servidor SSH. Esto es lo que realmente marca la diferencia en la seguridad SSH.
Editar el archivo de configuración sshd_config
El archivo principal de configuración es /etc/ssh/sshd_config. Debes editarlo con permisos de superusuario:
sudo nano /etc/ssh/sshd_config
Aquí tienes los cambios más importantes que debes realizar:
1. Deshabilitar el acceso root por SSH
Busca la línea PermitRootLogin y cámbiala a no:
PermitRootLogin no
Esto impide que alguien intente conectarse directamente como root. Siempre puedes usar sudo después de conectarte con tu usuario normal.
2. Deshabilitar la autenticación por contraseña
Busca la línea PasswordAuthentication y cámbiala a no:
PasswordAuthentication no
Esto fuerza el uso de claves públicas, eliminando el riesgo de ataques de fuerza bruta con contraseñas.
3. Limitar los usuarios que pueden conectarse
Añade la siguiente línea (o descoméntala) para especificar qué usuarios pueden acceder:
AllowUsers nuevousuario
Puedes añadir varios usuarios separados por espacios: AllowUsers usuario1 usuario2.
4. Cambiar el puerto SSH (opcional)
Busca la línea Port y cámbiala a un número alto, por ejemplo 2222:
Port 2222
Esto no es una seguridad infalible, pero reduce el ruido de los bots que escanean el puerto 22.
5. Configurar el tiempo de espera de conexión
Añade o modifica esta línea para evitar que las conexiones inactivas se mantengan abiertas:
ClientAliveInterval 300
ClientAliveCountMax 2
Esto cerrará la sesión si el cliente no envía datos durante 5 minutos (300 segundos) y falla 2 veces.
6. Limitar los intentos de autenticación
Añade o modifica esta línea para reducir los intentos de contraseña:
MaxAuthTries 3
[WARNING] Antes de reiniciar el servicio SSH, asegúrate de que tu configuración es correcta. Un error puede dejarte fuera del servidor. Para probar, ejecuta
sudo sshd -t. Si no muestra errores, puedes reiniciar el servicio consudo systemctl restart sshd(osudo service ssh restarten sistemas más antiguos).
Configurar un firewall
Un firewall es tu primera línea de defensa. Si solo quieres permitir el acceso SSH desde tu IP, puedes usar ufw (en Ubuntu/Debian) o firewalld (en CentOS/Fedora).
Con ufw:
sudo ufw allow from TU_IP_LOCAL to any port 2222
sudo ufw enable
Con firewalld:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="TU_IP_LOCAL" port port="2222" protocol="tcp" accept'
sudo firewall-cmd --reload
Reemplaza TU_IP_LOCAL con tu dirección IP pública (o rango de IPs). Esto bloquea el acceso SSH desde cualquier otra parte.
Paso 4: Buenas prácticas y solución de problemas comunes
Aquí tienes algunas recomendaciones adicionales y problemas frecuentes que puedes encontrar.
Buenas prácticas
- Copia de seguridad de la configuración: Antes de hacer cambios, copia el archivo
sshd_config:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup. - Usa
sudoen lugar desu: Cuando necesites permisos de administrador, usasudoen lugar de cambiar al usuarioroot. Esto deja un registro de auditoría. - Monitorea los logs: Revisa periódicamente los archivos de log en
/var/log/auth.log(Debian/Ubuntu) o/var/log/secure(Red Hat/CentOS) para ver intentos de conexión. - Mantén el sistema actualizado: Ejecuta
sudo apt update && sudo apt upgrade(Debian/Ubuntu) osudo yum update(Red Hat/CentOS) regularmente para parchear vulnerabilidades.
[INFO] Si usas Syspanel (panel de control en el puerto 2106), este panel puede gestionar usuarios SSH y sus claves de forma gráfica. Sin embargo, los pasos de este artículo te dan el conocimiento para hacerlo manualmente, lo cual es muy valioso para solucionar problemas o si el panel no está disponible.
Solución de problemas comunes
"Permission denied (publickey)"
Esto significa que tu clave no está siendo aceptada. Comprueba:
- Que la clave pública está en
~/.ssh/authorized_keysdel servidor. - Que los permisos de
~/.sshson700yauthorized_keyses600. - Que el usuario correcto está en
AllowUsers.
"Connection refused"
El servidor SSH no está escuchando en el puerto esperado. Comprueba:
- Que el servicio SSH está activo:
sudo systemctl status sshd. - Que el firewall permite el tráfico en el puerto configurado.
"Connection timed out"
El servidor no responde. Comprueba:
- Que la IP es correcta.
- Que el firewall local o del proveedor de hosting no bloquea el puerto.
Preguntas frecuentes (FAQ)
¿Puedo tener varios usuarios SSH?
Sí, puedes crear tantos usuarios como necesites. Simplemente repite el paso 1 para cada usuario y añádelos a AllowUsers en la configuración SSH.
¿Es seguro usar el puerto 22?
El puerto 22 es el estándar y es seguro siempre que tengas una buena configuración (claves, firewall, etc.). Cambiar el puerto es una capa extra de "seguridad por oscuridad", pero no es esencial.
¿Qué es una frase de contraseña en la clave SSH?
Es una contraseña adicional que protege tu clave privada. Si alguien roba tu clave, no podrá usarla sin la frase. Es muy recomendable.
¿Cómo puedo revocar el acceso de un usuario?
Elimina su clave pública del archivo authorized_keys o elimina el usuario por completo con sudo userdel -r nombre_usuario. También puedes quitarlo de AllowUsers en la configuración SSH.
¿Qué hago si me quedo fuera de mi servidor?
Si has configurado mal algo y no puedes acceder, puedes usar la consola web de tu proveedor de hosting (si la tiene) o conectarte físicamente (o mediante un KVM). Desde ahí, puedes revertir los cambios en sshd_config o en el firewall.
Conclusión
Crear y configurar un usuario SSH en Linux es un proceso sencillo pero poderoso que transforma la seguridad de tu servidor. Hemos visto cómo crear un usuario, configurar el acceso por claves públicas, endurecer la configuración del demonio SSH y proteger el acceso con un firewall. Siguiendo estos pasos, has eliminado los vectores de ataque más comunes y has establecido una base sólida para la administración remota.
Recuerda que la seguridad no es un estado, sino un proceso continuo. Mantén tus sistemas actualizados, revisa los logs con regularidad y nunca dejes de aprender. Con este conocimiento, ya puedes administrar tu servidor Linux con confianza y tranquilidad.
[TIP] Guarda este artículo como referencia. La próxima vez que necesites configurar un servidor, ya sabrás exactamente qué hacer. Y si usas Syspanel, recuerda que su acceso web es por el puerto 2106, pero el control fino que has aprendido aquí te hará un mejor administrador.
Espero que esta guía te haya sido de gran ayuda. Si tienes más dudas, no dudes en buscar más información o consultar la documentación oficial de tu distribución Linux. ¡Buena suerte con tu servidor!
