Usuario administrador con sudo: crearlo y dejar de entrar como root
En pocas palabras
En lugar de trabajar como root, creá un usuario propio y dale permiso de administrador con sudo. En Debian y Ubuntu: adduser marta y usermod -aG sudo marta. En AlmaLinux: useradd -m marta, passwd marta y usermod -aG wheel marta. Copiale tu clave SSH, entrá con esa cuenta desde una terminal nueva y probá sudo. Recién con las dos cosas funcionando, poné PermitRootLogin no (o prohibit-password) en un archivo de /etc/ssh/sshd_config.d/ y reiniciá SSH. Desde ese momento, cada comando con sudo queda registrado con el nombre de quien lo corrió.
Qué ganás con una cuenta propia
Es de las primeras cosas que conviene hacer al recibir un VPS, antes de instalar nada.
- Un freno antes de lo destructivo. Como root, un
rm -rfcon la ruta mal escrita se ejecuta sin preguntar. Con tu usuario, lo que toca el sistema necesitasudoadelante, y ese prefijo obliga a mirar el comando una vez más. - Un registro con nombre. Cada vez que alguien usa sudo, el sistema anota quién, cuándo, desde qué terminal y qué comando. Si tres personas entran como root, el registro solo dice root.
- Altas y bajas limpias. Cuando alguien deja el equipo, se bloquea su cuenta y listo. Con una contraseña de root compartida, hay que cambiarla y avisarles a todos.
- Menos blanco para los robots. Los intentos automáticos de entrar por SSH prueban primero con root. Si root no puede entrar por SSH, esos intentos no tienen a quién apuntar.
Por qué no sirve un segundo usuario con UID 0
Algunas recetas crean otra cuenta con el UID 0, el número de root. Para el kernel es root con otro nombre: los archivos que crea, sus procesos y la mayoría de los registros la muestran como root, así que no ganás trazabilidad. Y como SSH decide por el número, si después prohibís el acceso de root, esa cuenta también queda afuera. Lo correcto es un usuario común que pide permiso con sudo cuando lo necesita.
Lo que cambia según la distribución
| Debian 12 y 13, Ubuntu 24.04 | AlmaLinux 9 y 10 | |
|---|---|---|
| Crear la cuenta | adduser marta, que pregunta la contraseña | useradd -m marta y después passwd marta |
| Grupo de administradores | sudo | wheel |
| sudo instalado | En Ubuntu, siempre. En Debian, no si al instalar se definió una clave de root: apt install sudo | Sí |
| Servicio de SSH | ssh | sshd |
| Dónde queda el registro de sudo | journalctl _COMM=sudo; en Ubuntu, también /var/log/auth.log | journalctl _COMM=sudo o /var/log/secure |
En AlmaLinux, adduser existe pero es otro nombre de useradd: no pregunta nada ni pone contraseña.
Crear la cuenta y darle sudo
Conectate como root o con la cuenta que ya tenga privilegios. En Debian y Ubuntu:
adduser marta
usermod -aG sudo marta
id martaaddusercrea/home/marta, le copia la configuración básica del intérprete de comandos y te pide la contraseña. El nombre completo y los demás datos son opcionales: Enter para saltearlos.- En
usermod -aG, laasignifica agregar. Sin ella, el usuario queda solo en los grupos que nombrás y pierde el resto. id martatiene que mostrarsudoentre los grupos (en AlmaLinux,wheel).- En AlmaLinux, los comandos son
useradd -m marta,passwd martayusermod -aG wheel marta. El grupowheelya viene habilitado en la configuración de sudo.
Pasarle tu clave SSH
Si el servidor todavía acepta contraseñas, lo más directo es copiar la clave desde tu computadora con ssh-copy-id. PowerShell, en Windows, no trae ese comando, pero la segunda línea hace lo mismo:
ssh-copy-id marta@198.51.100.20
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh marta@198.51.100.20 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"- Si ya apagaste el acceso con contraseña, marta no puede entrar para recibir la clave. Hacelo desde la sesión de root con los comandos de abajo, que copian el
authorized_keysde root (si esa clave es tuya) y dejan a marta como dueña. - El dueño y los permisos no son un detalle: si la carpeta o el archivo quedan a nombre de root, o con permisos abiertos, SSH ignora la clave sin explicar por qué y vuelve a pedir contraseña.
- En AlmaLinux, después de copiar a mano, corré
restorecon -Rv /home/marta/.sshpara que SELinux le ponga la etiqueta correcta. - Si la cuenta es para otra persona, no le copies tu clave: pedile su clave pública y agregala al archivo, una por línea.
mkdir -p /home/marta/.ssh
cp /root/.ssh/authorized_keys /home/marta/.ssh/
chown -R marta:marta /home/marta/.ssh
chmod 700 /home/marta/.ssh
chmod 600 /home/marta/.ssh/authorized_keysProbar todo antes de cerrar una puerta
Dejá abierta la sesión de root que estás usando: es tu red de seguridad. Los grupos se leen al iniciar sesión, así que la prueba se hace desde una conexión nueva.
- En otra terminal, entrá con la cuenta nueva:
ssh marta@198.51.100.20. Tiene que entrar con la clave, sin pedir la contraseña del servidor (sí puede pedirte la frase de tu clave, si le pusiste una). - Corré
sudo -l: te pide la contraseña de marta y lista qué puede hacer. Tiene que aparecer una línea conALL. - Probá un comando real, como
sudo systemctl status ssh(en AlmaLinux,sshd). - Si la respuesta es que marta no figura en el archivo sudoers, falta el grupo o falta cerrar la sesión y volver a entrar.
Cerrar el acceso de root por SSH
OpenSSH toma el primer valor que encuentra para cada opción, y los archivos de /etc/ssh/sshd_config.d/ se leen antes que el resto de sshd_config, en orden alfabético. Por eso el cambio va en un archivo propio con un nombre que quede primero. En AlmaLinux suele haber otro archivo en esa carpeta con PermitRootLogin yes; el tuyo, con 00 adelante, le gana.
echo "PermitRootLogin no" > /etc/ssh/sshd_config.d/00-sin-root.conf
sshd -t && systemctl restart ssh
sshd -T | grep -i permitrootlogin- En AlmaLinux el servicio se llama
sshd:systemctl restart sshd. sshd -trevisa la sintaxis antes de reiniciar. Si devuelve un error, no reinicies hasta corregirlo.- Si tenés scripts o respaldos que entran como root con clave, usá
prohibit-passworden lugar deno: root sigue entrando con clave, nunca con contraseña. - Probá desde afuera:
ssh root@198.51.100.20tiene que ser rechazado yssh marta@198.51.100.20tiene que entrar. Recién ahí cerrá la sesión de root.
Si algo sale mal
| Síntoma | Causa probable | Arreglo |
|---|---|---|
| La cuenta nueva pide contraseña en vez de usar la clave | .ssh o authorized_keys tienen otro dueño o permisos abiertos | chown -R marta:marta, permisos 700 y 600 y, en AlmaLinux, restorecon |
| sudo responde que marta no está en sudoers | Falta el grupo, o la sesión se abrió antes de agregarlo | Revisar con id marta, salir y volver a entrar |
| La cuenta no tiene carpeta personal y la clave no funciona | Se creó con useradd sin -m en Debian o Ubuntu | Borrarla con userdel marta y crearla otra vez con adduser |
| sudo dejó de funcionar para todos | Se editó /etc/sudoers a mano y quedó un error de sintaxis | Entrar como root y corregirlo con visudo |
| No entra nadie por SSH | Se cerró root antes de probar la cuenta nueva | En un servidor cloud, la consola de rescate; en un Cloud VPS, pedí ayuda por ticket |
Permisos a medida y bajas
Para tocar la configuración de sudo no abras /etc/sudoers con un editor común. Usá visudo -f /etc/sudoers.d/deploy: revisa la sintaxis antes de guardar y no te deja cerrar un archivo roto. Así podés, por ejemplo, permitir que una cuenta de despliegue reinicie un solo servicio sin contraseña:
deploy ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx- Para sacarle el permiso a alguien:
gpasswd -d marta sudo(owheel). Rige desde su próxima sesión. - Para bloquear la cuenta sin borrarla:
usermod -L -e 1 marta.-Lbloquea la contraseña y-e 1vence la cuenta, que es lo que frena también el acceso con clave. - Para borrarla del todo:
deluser --remove-home martaen Debian y Ubuntu,userdel -r martaen AlmaLinux. - El paso siguiente es apagar el acceso con contraseña para todas las cuentas: está en claves SSH para entrar sin contraseña.
Preguntas frecuentes
¿Qué contraseña escribo cuando sudo me la pide?
La de tu propio usuario, no la de root. Después de escribirla, sudo no vuelve a pedirla por unos minutos en esa misma terminal. Así nadie del equipo necesita conocer la contraseña de root.
¿Cómo vuelvo a trabajar como root cuando lo necesito?
Con sudo -i abrís una sesión de root desde tu cuenta. Usala para una tarea puntual y salí con exit: si te quedás adentro toda la tarde, el registro vuelve a decir root en todo y perdés lo que ganaste.
¿Qué hago con el usuario que trajo la imagen del sistema?
Si tu VPS vino con un usuario inicial, como el ubuntu de algunas imágenes, cuando tu cuenta esté probada podés borrarlo, o bloquearlo con usermod -L -e 1 si preferís no tocar nada más. Lo que no conviene es dejar una cuenta con sudo que nadie usa ni revisa.
¿Cerrar root por SSH afecta al cron o a los servicios?
No. PermitRootLogin solo decide quién puede conectarse por SSH. Root sigue existiendo, las tareas programadas y los servicios corren igual, y desde tu cuenta llegás a root con sudo.
Seguí leyendo
Claves SSH para entrar a tu servidor sin contraseña
Generar una clave ed25519 en Linux, macOS o Windows, cargarla en el servidor, usar el agente y apagar el acceso por contraseña sin quedarte afuera.
8 min de lectura
Primeros pasos con tu VPS: la primera hora, en orden
Qué hacer apenas recibís un VPS con Linux, antes de instalar tu aplicación: actualizar, crear tu usuario, entrar con clave SSH, firewall, hora y respaldos.
5 min de lectura
Firewall y fail2ban en un VPS Linux, sin quedarte afuera
Cómo activar ufw o firewalld sin cortar tu propio acceso, qué puertos abrir según lo que corre en el VPS y cómo frenar con fail2ban los ataques a SSH.
7 min de lectura
