Il est préférable d'utiliser des clés publiques pour SSH. Alors mon sshd_config
a PasswordAuthentication no
.
Certains utilisateurs ne se connectent jamais, par exemple un utilisateur sftp avec shell /usr/sbin/nologin
. Ou un compte système.
Je peux donc créer un tel utilisateur sans mot de passe avec adduser gary --shell /usr/sbin/nologin --disabled-password
.
Est-ce une bonne / mauvaise idée? Y a-t-il des ramifications auxquelles je n'ai pas pensé?
sudo
accéder (soit parce qu'ils n'ont pas du tout d'autorisations sudo, soit en ayant l'autorisation sudo avecNOPASSWD
), la réponse que vous avez sélectionnée devrait être appropriée. J'ai soumis une modification à cette réponse pour inclure la préoccupation sudo, mais j'ai pensé que je vous l'appellerais ici en attendant.Réponses:
Si vous avez un accès root au serveur et pouvez régénérer les clés ssh pour vos utilisateurs au cas où ils les perdraient
ET
vous êtes sûr qu'un utilisateur (en tant que personne) n'aura pas plusieurs comptes d'utilisateurs et qu'il doit basculer entre ceux d'une session SSH (enfin, il peut également ouvrir plusieurs sessions SSH si le besoin s'en fait sentir)
ET
ils n'auront jamais besoin d'un accès "physique" (via clavier + moniteur ou via console distante pour une VM) au serveur
ET
aucun utilisateur n'a
sudo
accès par mot de passe (c'est -à- dire qu'il n'a pas du tout accès sudo, ou qu'il a accès sudo avecNOPASSWD
)Je pense que tu vas bien.
Nous avons de nombreux serveurs au travail configurés comme ceci (seuls certains comptes ont besoin d'accéder à la machine virtuelle via la console distante vmware, les autres se connectent uniquement via SSH avec l'authentification pubkey).
la source
PasswordAuthentication no
alors c'est un problème différent (l'utilisateur ne pourrait pas se connecter de toute façon).Cette question mentionnée à l'origine
passwd --delete <username>
n'est pas sûre : avec cela, le champ de mot de passe crypté/etc/shadow
sera complètement vide.Si vous avez configuré votre
sshd
pour refuser l'authentification par mot de passe, alors c'est sûr avec SSH ... Mais si tout autre service sur votre système utilise l'authentification par mot de passe et n'est pas configuré pour rejeter les mots de passe nuls, cela permet l'accès sans mot de passe! Tu ne veux pas ça.adduser --disabled-passwd
produira une/etc/shadow
entrée où le champ de mot de passe crypté est juste un astérisque, c.-à-d.Il s'agit "d'un mot de passe crypté qui ne peut jamais être entré avec succès", c'est-à-dire que le compte est valide et autorise techniquement les connexions, mais il rend impossible l' authentification par mot de passe . Donc, si vous avez d'autres services basés sur l'authentification par mot de passe sur votre serveur, cet utilisateur en est bloqué.
Seules les méthodes d'authentification qui utilisent autre chose que le mot de passe de compte standard (par exemple les clés SSH) fonctionneront pour cet utilisateur, pour tout service qui utilise les fichiers de mot de passe système dans ce système. Lorsque vous avez besoin d'un utilisateur qui peut se connecter avec des clés SSH uniquement, c'est ce que vous voulez.
Si vous devez définir un compte existant sur cet état, vous pouvez utiliser cette commande:
Il existe une troisième valeur spéciale pour le champ de mot de passe crypté:,
adduser --disabled-login
alors le champ ne contiendra qu'un seul point d'exclamation.Comme l'astérisque, cela rend impossible l'authentification par mot de passe, mais il a également une signification supplémentaire: il marque le mot de passe comme «verrouillé» pour certains outils d'administration.
passwd -l
a le même effet en préfixant le hachage de mot de passe existant avec un point d'exclamation, ce qui rend encore une fois l'authentification par mot de passe impossible à utiliser.Mais voici un piège pour les imprudents: en 2008, la version de la
passwd
commande qui vient de l'ancienshadow
paquet a été changée pour redéfinirpasswd -l
de "verrouiller le compte" à "verrouiller le mot de passe". La raison indiquée est "pour la compatibilité avec une autre version de passwd".Si vous (comme moi) avez appris cela il y a longtemps, cela peut être une mauvaise surprise. Cela n'aide pas non plus les sujets qui ne
adduser(8)
sont apparemment pas encore conscients de cette distinction.La partie qui désactive le compte pour toutes les méthodes d'authentification est effectivement mise en valeur d' une date d'expiration de 1 pour le compte:
usermod --expiredate 1 <username>
. Avant l'année 2008,passwd -l
cela provient dushadow
kit source utilisé pour ce faire en plus de préfixer le mot de passe avec un point d'exclamation - mais ne fait plus cela.Le journal des modifications du paquet Debian dit:
L'historique des bogues pour le bogue 492307 et le bogue 389183 de Debian peut être utile pour comprendre la réflexion derrière cela.
la source
adduser --disabled-passwd
- donc si un autre service permet l'authentification par mot de passe, l'utilisateur peut se connecter sans mot de passe?adduser --disabled-password
spécifiquement, il est impossible de réussir l'authentification par mot de passe pour ce compte.*
, c'est donc la première chose que les gens lisent.passwd
le code source en 2008. Ne l'aimez-vous pas quand quelque chose que vous avez appris et sur lequel vous vous êtes fondé s'est avéré ne plus l'être?