Un usuario con sudo en lugar de trabajar como root
Trabajar todo el día como root significa que cualquier error de tipeo se ejecuta sin preguntar y que los registros no pueden decir quién hizo qué. La alternativa lleva cuatro comandos: sudo adduser juan, sudo adduser juan sudo, la clave SSH copiada a esa cuenta, y PermitRootLogin no en /etc/ssh/sshd_config. Lo que no se puede improvisar es el orden: el acceso de root se cierra al final, después de comprobar en una segunda terminal que la cuenta nueva entra por clave y que sudo le responde.
Qué cambia cuando dejás de entrar como root
root no pregunta. Un rm con la ruta equivocada, un chown recursivo un directorio más arriba de lo que querías, un editor que guarda donde no era: todo eso se ejecuta sin confirmación y no hay papelera. Con una cuenta normal, lo destructivo necesita que escribas sudo adelante, y ese medio segundo es justo el que te falta cuando te equivocás.
Después está el registro. Si tres personas entran como root, el servidor anota que root hizo algo y ahí se termina la información. Con una cuenta por persona, cada comando con sudo queda anotado con el nombre de quien lo corrió, y lo que se rompió a las tres de la mañana se reconstruye en lugar de adivinarse.
Y cambia cómo se saca a alguien: si el equipo compartía la contraseña de root, que se vaya una persona obliga a cambiarla y avisarle a todos. Con cuentas propias, se borra una cuenta y nadie más se entera.
El orden completo, de principio a fin
- Creás la cuenta con adduser.
- La agregás al grupo sudo.
- Le copiás la clave SSH, con el dueño y los permisos correctos.
- Abrís una segunda terminal y comprobás que la cuenta entra por clave.
- En esa misma sesión comprobás que sudo funciona.
- Recién ahí ponés PermitRootLogin no y reiniciás el servicio.
- Verificás que root ya no entra y que vos sí.
Crear la cuenta
- Entrá al servidor con la cuenta que ya tenga privilegios y escribí sudo adduser juan.
- El comando te pide una contraseña y unos datos opcionales que podés saltear con Enter. Lo importante es lo que hace sin avisar: crea /home/juan, le asigna un intérprete de comandos y arma el grupo propio del usuario.
- No uses useradd para esto. Es el comando de más abajo y no arma nada de eso: la cuenta queda sin home y sin un intérprete usable, y después la clave SSH no funciona porque no hay dónde poner el archivo authorized_keys.
- Dale permisos de administración con sudo adduser juan sudo. El grupo se llama sudo, y pertenecer a él es lo que habilita el comando.
- Verificá con id juan: entre los grupos tiene que aparecer sudo.
- Si juan ya estaba conectado en otra terminal, tiene que salir y volver a entrar. Los grupos se leen cuando se abre la sesión, así que en la sesión vieja sudo va a seguir diciendo que no está autorizado.
Pasarle la clave SSH a la cuenta nueva
- Lo más simple, desde tu computadora: ssh-copy-id juan@203.0.113.24, con la contraseña que le acabás de poner. Esto requiere que el servidor todavía acepte contraseñas.
- Si ya las apagaste, hacelo desde la sesión que tenés abierta. Primero la carpeta, ya con dueño y permisos: sudo install -d -m 700 -o juan -g juan /home/juan/.ssh.
- Después el archivo, copiando el que ya usa root: sudo install -m 600 -o juan -g juan /root/.ssh/authorized_keys /home/juan/.ssh/authorized_keys.
- Si preferís hacerlo con mkdir y cp, acordate del dueño: sudo chown -R juan:juan /home/juan/.ssh. Es el paso que más se olvida y el que deja la clave sin funcionar.
- Copiar la clave de root solo tiene sentido si esa clave es tuya. Si la cuenta es para otra persona, que te mande su clave pública y pegás esa, una por línea.
Probar las dos cosas antes de seguir
- Dejá abierta la sesión actual y abrí una segunda terminal.
- Entrá con la cuenta nueva: ssh juan@203.0.113.24. Tiene que entrar sin pedir contraseña del servidor.
- Escribí id para confirmar que sos juan y que el grupo sudo está.
- Probá sudo de verdad, no en el aire: sudo systemctl status ssh. Te va a pedir la contraseña de juan, no la de root, y después tiene que mostrar el estado del servicio.
- Si aparece el mensaje de que juan no figura en el archivo de sudoers, no sigas: falta el grupo, o falta cerrar y volver a abrir la sesión.
Cerrar el acceso directo de root
- Copiá el archivo: sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original.
- Editalo con sudo nano /etc/ssh/sshd_config y poné PermitRootLogin no.
- Si querés un paso intermedio, prohibit-password deja entrar a root solo con clave y nunca con contraseña. Es el valor que OpenSSH trae de fábrica, así que es lo que ya tenías si nadie lo tocó.
- Revisá también /etc/ssh/sshd_config.d/: lo que esté ahí se lee antes y puede contradecir lo que escribiste.
- Validá con sudo sshd -t y aplicá con sudo systemctl restart ssh.service.
- Comprobá desde afuera: ssh root@203.0.113.24 tiene que rebotar, y ssh juan@203.0.113.24 tiene que entrar. Las dos cosas, en ese orden.
Qué se rompe si lo hacés en el orden equivocado
| Lo que hiciste antes de tiempo | Lo que pasa |
|---|---|
| Apagar el acceso de root antes de probar la cuenta nueva | No entra nadie. Solo queda la consola del panel |
| Apagar la contraseña antes de copiarle la clave al usuario nuevo | La cuenta nueva no tiene forma de entrar |
| Crear la cuenta con useradd en vez de adduser | Sin home ni intérprete: la sesión conecta y se cierra sola |
| Copiar authorized_keys como root y no cambiar el dueño | SSH ignora la clave sin explicar y vuelve a pedir contraseña |
| Agregar al grupo sudo con la sesión ya abierta | sudo insiste en que el usuario no está autorizado |
| Editar /etc/sudoers con un editor común y equivocarse | sudo deja de funcionar para todos a la vez |
En Ubuntu la contraseña de root viene bloqueada de fábrica, así que si perdés sudo no tenés un su al que recurrir: la salida es la consola del panel.
sudo con contraseña o sin contraseña
Por defecto sudo pide la contraseña del propio usuario, no la de root, y no la vuelve a pedir durante unos minutos en la misma terminal. Es un equilibrio razonable: molesta poco y frena el comando destructivo que escribiste sin pensar.
Las imágenes de nube suelen traer su usuario inicial con sudo sin contraseña, porque esa cuenta entra solo con clave y directamente no tiene contraseña que tipear. En un servidor de una sola persona es defendible. En uno donde trabajan varios, deja de serlo: cualquiera que se siente frente a una terminal abierta es root sin fricción.
Si vas a tocar la configuración de sudo, no abras /etc/sudoers con nano. Usá sudo visudo, o creá un archivo propio con sudo visudo -f /etc/sudoers.d/juan. visudo revisa la sintaxis antes de guardar; un editor común te deja guardar un archivo roto, y un sudoers roto deja a todo el mundo sin sudo al mismo tiempo.
Preguntas frecuentes
¿Puedo seguir entrando como root cuando hace falta?
Sí, desde adentro: sudo -i te abre una sesión de root en el servidor. Lo que se cierra es el acceso directo por SSH con el usuario root, que es el que reciben todo el día los intentos automatizados.
¿Está mal usar sudo su -?
No está mal, y sudo -i hace lo mismo de forma más directa. El problema no es el comando sino quedarse ahí: si abrís una sesión de root y trabajás el resto del día adentro, volviste al punto de partida y el registro vuelve a decir root en todo.
¿Y si somos varios en el mismo servidor?
Una cuenta por persona, cada una con su propia clave pública, y sudo solo para quien lo necesite. Nunca una cuenta compartida: cuando se va alguien no se sabe qué tocó ni alcanza con cambiar una contraseña.
¿Conviene borrar el usuario que trae la imagen del sistema?
Podés, una vez que tu cuenta esté probada. Si preferís no tocarlo, alcanza con vaciarle authorized_keys y bloquearle la contraseña con sudo passwd -l ubuntu. Lo que no conviene es dejar una cuenta conocida, con sudo y con clave, que nadie usa ni mira.
Seguí leyendo
Entrar al VPS con clave SSH en lugar de contraseña
Generar el par de claves, copiarlo al servidor, probar que entra y recién ahí apagar la contraseña. Desde Linux, macOS y Windows, sin quedarte afuera.
Primeros pasos al recibir un VPS: la checklist de seguridad
Un servidor nuevo está expuesto desde el minuto uno. Las diez cosas que hay que hacer antes de instalar nada.
Por qué tu correo tarda o cae en spam en Gmail
Demora y spam son dos problemas distintos con causas distintas. Cómo diagnosticar cuál te está pasando y qué se revisa antes de abrir un ticket.