Hagas lo que hagas, no dejes la cuenta en el estado dejado passwd -u
, con un campo de contraseña en blanco: eso permite iniciar sesión sin ingresar una contraseña (excepto a través de SSH, porque SSH lo rechaza).
Cambie la cuenta para que no tenga contraseña, pero esté desbloqueado. Una cuenta no tiene contraseña si el hash de contraseña en la base de datos de contraseñas no es el hash de ninguna cadena. Tradicionalmente, una cadena de un carácter como *
o !
se usa para eso.
Las cuentas bloqueadas también usan un marcador especial en el campo de contraseña que hace que la cadena no sea el hash de ninguna cadena. El marcador depende del sistema. En Linux, el passwd
comando marca las contraseñas bloqueadas poniendo un !
al principio, y OpenSSH trata la cuenta como bloqueada si el campo comienza con !
. Otras variantes de Unix tienden a usar mecanismos similares pero no idénticos, así que tenga cuidado si su base de datos de contraseñas se comparte entre una red heterogénea.
En Linux, puede deshabilitar el acceso basado en contraseña a una cuenta mientras permite el acceso SSH (con algún otro método de autenticación, generalmente un par de claves) con
usermod -p '*' username
El usuario no podrá volver a cambiar la cuenta a una contraseña, ya que eso requiere que ingrese una contraseña válida.
Si lo desea, puede configurar SSH para rechazar la autenticación de contraseña, independientemente de si la cuenta tiene una contraseña. Aún tendrá que hacer arreglos para que SSH no considere que la cuenta está bloqueada, por lo que, por ejemplo, en Linux deberá eliminar el !
campo de la contraseña (pero no deje el campo vacío; configúrelo *
como se explicó anteriormente) ) Para deshabilitar la autenticación de contraseña para SSH, agregar una PasswordAuthentication
directiva para /etc/sshd_config
o /etc/ssh/sshd_config
(lo que es en su sistema). Use un Match
bloque para hacer que esa directiva solo se aplique a un usuario específico; Match
los bloques deben aparecer
…
Match User username
PasswordAuthentication no