web-dev-qa-db-fra.com

comment désactiver la connexion SSH avec mot de passe pour certains utilisateurs?

Sous Linux (Debian Squeeze), je voudrais désactiver la connexion SSH en utilisant le mot de passe pour certains utilisateurs (groupe sélectionné ou tous les utilisateurs sauf root). Mais je ne veux pas désactiver la connexion en utilisant un certificat pour eux.

edit: merci beaucoup pour la réponse détaillée! Pour une raison quelconque, cela ne fonctionne pas sur mon serveur:

Match User !root
PasswordAuthentication no

... mais peut être facilement remplacé par

PasswordAuthentication no
Match User root
PasswordAuthentication yes
172
Stepan

Essayez Match dans sshd_config:

Match User user1,user2,user3,user4
    PasswordAuthentication no

Ou par groupe:

Match Group users
    PasswordAuthentication no

Ou, comme mentionné dans le commentaire, par négation:

Match User !root
    PasswordAuthentication no

Notez que la correspondance est effective "jusqu'à une autre ligne de correspondance ou à la fin du fichier." (l'indentation n'est pas significative)

184
Cakemox

Match dans sshd_config fonctionne bien. Tu devrais utiliser Match all pour mettre fin au bloc de correspondance si vous utilisez openssh 6.5p1 ou supérieur. Exemple:

PasswordAuthentication no
Match User root
PasswordAuthentication yes
Match all
26
Trevor Hateley

Il y a plusieurs façons de le faire - tout d'abord, vous pouvez exécuter un deuxième démon sshd sur un port différent avec une configuration différente - c'est un peu un hack, mais avec du travail en chroot, cela devrait fonctionner très bien.

En outre, vous pouvez autoriser l'authentification par mot de passe, mais verrouiller les mots de passe pour tous les utilisateurs sauf un. Les utilisateurs avec des mots de passe verrouillés pourront toujours s'authentifier avec des clés publiques.

3
mitchellhislop