Comment puis-je permettre à un utilisateur de se connecter avec des clés ssh mais pas avec un mot de passe?

17

Je souhaite créer un utilisateur et ne pas avoir de mot de passe. Comme vous ne pouvez pas vous connecter avec un mot de passe. Je veux ajouter des clés à ses clés autorisées en utilisant root. C'est pour mon système de sauvegarde automatisé.

Jeff Schaller
la source

Réponses:

26

L'utilisation de passwd -dest tout à fait erronée , du moins sur Fedora , sur toute distribution Linux basée sur des shadow-utils. Si vous supprimez le mot de passe avec passwd -d, cela signifie que n'importe qui peut se connecter à cet utilisateur (sur console ou graphique) sans fournir de mot de passe.

Afin de bloquer les connexions avec l'authentification par mot de passe, exécutez , qui verrouille le compte le rendant disponible uniquement pour l'utilisateur root. Le verrouillage est effectué en rendant le mot de passe crypté dans une chaîne non valide (en préfixant la chaîne cryptée avec un!).passwd -l username

Toute tentative de connexion, locale ou distante, entraînera un "mot de passe incorrect" , tandis que la connexion par clé publique fonctionnera toujours. Le compte peut ensuite être déverrouillé avec .passwd -u username

Si vous souhaitez verrouiller complètement un compte sans le supprimer, modifiez /etc/passwdet définissez /sbin/nologinou /bin/falsedans le dernier champ. Cela se traduira par "Ce compte n'est pas disponible actuellement." pour toute connexion attemp.

Veuillez vous référer à la page de manuel passwd (1).

guido
la source
@guido: rvs ne sera pas informé de votre réponse. Vous auriez besoin d'ajouter un commentaire à sa réponse pour cela (je l'ai fait). Notez que les lecteurs peuvent lire votre réponse avant la sienne, vous devez écrire des réponses qui répondent directement à la question. Bravo pour avoir signalé celui-ci! Il s'applique à la plupart des distributions Linux (celles utilisant les utilitaires cachés Linux).
Gilles 'SO- arrête d'être méchant'
@Gilles: désolé, je suis nouveau sur stackexchange; j'ai seulement souligné celui-ci un peu à peine parce que c'était comme suggérer aux utilisateurs de configurer des comptes sans mot de passe, et il a été accepté et marqué comme utile ...
guido
@guido: Pas de soucis, je viens d'expliquer comment rendre votre avertissement plus efficace. En fait, dans des cas extrêmes où une réponse est dangereusement erronée, il serait approprié de suggérer une modification en ajoutant un avertissement ou une correction (j'espère que vous ne rencontrerez pas ces situations trop souvent sur le site).
Gilles 'SO- arrête d'être méchant'
@guido: En fait, sur Debian Squeeze (je ne connais pas Lenny ou Etch), cette réponse fonctionne. Il ne permet à personne d'autre que root de se connecter, autorise les clés mais ce n'est pas un mot de passe en moins, il n'accepte simplement aucun mot de passe. J'ai été surpris que vous puissiez «supprimer le mot de passe» et que cela fonctionnerait de cette façon. Mais il a fait exactement ce que je voulais et exactement ce que fait cette réponse et était la seule réponse, alors je l'ai juste acceptée. Cette réponse est plus logique et je l'accepterai car je suis prêt à parier que d'autres distos permettent à quiconque de se connecter à bc sans mot de passe contrairement à Debian. Quoi qu'il en soit, bonne réponse.
1
@ acidzombie24, @mattdn: ils auraient pu supprimer nullok de pam.d / password-auth si debian utilise pam (je pense que oui, mais je ne suis pas un expert debian). Cependant, la page de manuel passwd (1) indique clairement que l' argument -d est de créer des comptes sans mot de passe, donc toute spéculation spécifique à la distribution ici est secondaire, car la question était très générale.
guido
2

Ne demandez-vous pas spécifiquement au démon SSH, de ne pas accepter l'authentification par mot de passe mais l'authentification par clé / phrase de passe?

Recherchez les modifications apportées à sshd_config.

Ensemble

PasswordAuthentication No
PreferredAuthentications publickey,hostbased,keyboard-interactive
Protocol 2,1

Recherchez d'autres paramètres de configuration dans man ssh_config

Nikhil Mulley
la source
0

Ne définissez tout simplement pas le mot de passe de l'utilisateur. S'il existe déjà un mot de passe, supprimez-le à l'aide de passwd -l <username>.

Mais il serait toujours possible de se connecter en tant que cet utilisateur - à l'aide de authorized_keys, ou via su ou sudo à partir d'un compte privilégié.

rvs
la source
1
Comme l'a souligné guido , passwd -drend le compte sans mot de passe, comme dans, vous pouvez vous connecter sans avoir à taper un mot de passe. Utilisez passwd -lpour verrouiller le compte (pensez-y comme donnant un mot de passe impossible à taper).
Gilles 'SO- arrête d'être méchant'
J'ai ajouté un avertissement à votre message, car il est dangereux en l'état. Je vous laisse le soin de décider si vous voulez corriger votre réponse, ou supprimer votre réponse (si vous pensez que guido est suffisante), ou réfuter l'avertissement.
Gilles 'SO- arrête d'être méchant'
Pourquoi oh pourquoi les gens acceptent-ils la réponse qui ne fonctionne même pas?
mathepic
@mathepic: Cela fonctionne, sur debian. Exactement comme je l'ai demandé
êtes-vous sûr qu'un utilisateur non privilégié ne peut pas accéder suà l'utilisateur?
mattdm