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
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)
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
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.