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
- Pasa del todo al acceso con clave: autenticación con clave SSH.
- Reduce el ruido de fuerza bruta: fail2ban.
- Repasa el resto de lo básico con la lista de seguridad para un VPS nuevo.
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.
Comentarios
Aún no hay comentarios. Sé el primero.