−25%

en Windows con pago anual, hasta el 31/10. Ver planes

EQVPS

Cómo crear un usuario sudo en un VPS y dejar de usar root

Crea un usuario no root con sudo en Ubuntu o Debian, dale tu clave SSH, pruébalo y desactiva el acceso de root, en un orden que no te deja fuera.

Casi todos los VPS nuevos empiezan igual: entras como root, instalas un par de cosas y un mes después sigues siendo root. Funciona justo hasta que un script que pegaste borra el directorio equivocado. Configurar un usuario normal con sudo lleva cinco minutos, y el orden importa más que los comandos: si lo haces mal, te quedas fuera.

Esta es la secuencia segura para Ubuntu 22.04/24.04 y Debian 12.

1. Crea el usuario

Como root:

adduser deploy
usermod -aG sudo deploy

adduser pide una contraseña y algunos datos opcionales (ahí basta con pulsar Enter). Elige una contraseña de verdad: la escribirás para sudo. En un Debian mínimo, ejecuta antes apt install -y sudo si falta el comando.

2. Dale tu clave SSH

Lo más fácil es copiar las claves de root manteniendo el propietario correcto:

rsync --archive --chown=deploy:deploy /root/.ssh /home/deploy

Si prefieres hacerlo a mano:

mkdir -p /home/deploy/.ssh
cp /root/.ssh/authorized_keys /home/deploy/.ssh/
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys

Los permisos incorrectos son el motivo clásico por el que el acceso con clave falla en silencio. SSH ignora un authorized_keys en el que otros usuarios pueden escribir.

3. Prueba antes de cambiar nada

Deja abierta la sesión de root. En una terminal nueva:

ssh -p 22 deploy@203.0.113.10
sudo whoami

Usa tu IP y tu puerto: en un plan NAT es tu puerto SSH personal del panel. Si sudo whoami imprime root, todo va bien. Si el acceso falla, todavía tienes la ventana de root para arreglarlo.

4. Desactiva el acceso de root

Ahora cierra la puerta. En lugar de editar la configuración principal, crea un pequeño archivo adicional:

cat > /etc/ssh/sshd_config.d/10-hardening.conf <<'EOF'
PermitRootLogin no
PasswordAuthentication no
EOF
sshd -t && systemctl reload ssh

sshd -t comprueba primero la sintaxis. Una configuración rota más un reload es justo como la gente acaba necesitando la consola. PasswordAuthentication no solo tiene sentido cuando el acceso con clave funciona para el nuevo usuario, y eso acabas de comprobarlo.

Abre otra terminal más y confirma que root queda rechazado y que deploy sigue entrando. Después cierra la sesión antigua de root.

5. Opcional: sudo sin contraseña para automatización

Si un script de despliegue necesita sudo sin pregunta, dale exactamente eso y nada más:

visudo -f /etc/sudoers.d/deploy
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart myapp

Sinceramente, NOPASSWD: ALL es tentador, pero significa que una clave robada equivale a root. Limítalo a los comandos que ejecuta la automatización.

Si algo sale mal

La consola web de tu panel no depende de SSH ni del firewall. Entra por ahí, corrige el archivo en /etc/ssh/sshd_config.d/, recarga y listo. Contamos el proceso completo en cómo volver a entrar en un VPS bloqueado.

Qué hacer después

Las opciones de acceso de cada plan están en la documentación de acceso. Hasta un Nano de $3 merece un usuario no root: es la mejora de seguridad más barata que existe.

Preguntas frecuentes

¿Por qué no seguir usando root?

Todo lo que ejecutas como root puede romper el sistema entero, incluido un error de tecleo. Además, los bots prueban primero el usuario 'root', así que desactivar su acceso elimina el objetivo más adivinado. Un usuario con nombre y sudo te da una pausa antes de cada comando privilegiado y un registro de lo que se ejecutó.

¿Y si me quedo fuera?

Usa la consola web de tu panel. Funciona aunque SSH esté roto o el firewall te bloquee, así que puedes entrar y arreglar sshd_config. Por eso se prueba el nuevo usuario antes de cerrar la sesión de root.

¿Debo permitir sudo sin contraseña?

En una cuenta humana, mantén la petición de contraseña: es la última defensa si tu clave SSH se filtra. Sudo sin contraseña es razonable para un usuario de despliegue dedicado que usa la automatización, limitado a los comandos que realmente necesita.

El comando sudo no existe en mi servidor Debian. ¿Por qué?

Las imágenes mínimas de Debian no siempre lo incluyen. Instálalo como root con 'apt install -y sudo' y luego añade tu usuario al grupo sudo.

¿Qué puerto SSH uso?

El que aparece en tu panel. Los planes con IP dedicada usan el puerto 22 en tu propia IP; los planes NAT usan tu puerto SSH personal.

Comentarios

Aún no hay comentarios. Sé el primero.

Deja un comentario

Los comentarios se moderan antes de aparecer.