Quoi que vous fassiez, ne laissez pas le compte dans l'état laissé par passwd -u
, avec un champ de mot de passe vide: qui permet les connexions sans entrer de mot de passe (sauf via SSH, car SSH refuse cela).
Modifiez le compte pour ne pas avoir de mot de passe, mais déverrouillez. Un compte n'a pas de mot de passe si le hachage de mot de passe dans la base de données de mots de passe n'est pas le hachage d'une chaîne. Traditionnellement, une chaîne d'un caractère telle que *
ou !
est utilisée pour cela.
Les comptes verrouillés utilisent également un marqueur spécial dans le champ de mot de passe qui empêche la chaîne d'être le hachage d'une chaîne. Le marqueur dépend du système. Sous Linux, la passwd
commande marque les mots de passe verrouillés en mettant un !
au début, et OpenSSH traite le compte comme verrouillé si le champ commence par !
. Les autres variantes Unix ont tendance à utiliser des mécanismes similaires mais pas identiques, alors faites attention si votre base de données de mots de passe est partagée entre un réseau hétérogène.
Sous Linux, vous pouvez désactiver l'accès par mot de passe à un compte tout en autorisant l'accès SSH (avec une autre méthode d'authentification, généralement une paire de clés) avec
usermod -p '*' username
L'utilisateur ne pourra pas redéfinir le compte pour avoir un mot de passe, car cela nécessite qu'il entre un mot de passe valide.
Si vous le souhaitez, vous pouvez configurer SSH à la place pour refuser l'authentification par mot de passe, que le compte ait ou non un mot de passe. Vous devrez toujours prendre des dispositions pour que SSH ne considère pas le compte comme verrouillé, donc par exemple sous Linux, vous devrez supprimer le !
champ du mot de passe (mais ne faites pas le champ vide - définissez-le *
comme expliqué ci-dessus) ). Pour désactiver l'authentification par mot de passe pour SSH, ajoutez une PasswordAuthentication
directive à /etc/sshd_config
ou /etc/ssh/sshd_config
(quelle qu'elle soit sur votre système). Utilisez un Match
bloc pour que cette directive ne s'applique qu'à un utilisateur spécifique; Match
les blocs doivent apparaître
…
Match User username
PasswordAuthentication no