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

166

Sous Linux (Debian Squeeze), je voudrais désactiver la connexion SSH avec un 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
Stepan
la source
Peut-être que c'est à cause de votre indentation?
nil
7
Il convient de mentionner que ces lignes doivent correspondre à la fin du fichier
zidarsk8
1
! root ne fonctionne pas non plus pour moi. La deuxième approche a fait l'affaire.
natenho
J'ai vu des cas où a Match User "!root,*"fait le travail.
Roman Hocke

Réponses:

181

Essayez Matchdans 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'à ce qu'une autre ligne de correspondance ou la fin du fichier". (l'indentation n'est pas significative)

Cakemox
la source
4
préfère Match user !rootpour ce cas
84104
1
Génial, je ne connaissais pas la syntaxe Match. Une suggestion que je ferais, cependant, est que s’il s’agisse d’un serveur public, je n’autoriserais pas la connexion root via SSH. Ce n'est probablement pas un gros problème si c'est interne.
Safado
4
@SpacemanSpiff C'est ce à quoi servent a) les mots de passe forts et b) denyhosts / fail2ban.
ceejayoz
2
@ deed02392 Vous pouvez considérer qu'une clé est un mot de passe vraiment très fort si vous le souhaitez.
ceejayoz
4
C'est tellement plus fort que ce n'est pas dans le même stade, c'était ce que je voulais dire. L'authentification par mot de passe doit également être désactivée pour root et les clés ne doivent être autorisées que pour les connexions.
deed02392
22

Matchen sshd_configfonctionne bien. Vous devez utiliser Match allpour mettre fin au bloc de correspondance si vous utilisez openssh 6.5p1 ou une version ultérieure. Exemple:

PasswordAuthentication no
Match User root
PasswordAuthentication yes
Match all
Trevor Hateley
la source
Cela n'a pas fonctionné pour moi ...
Dimitrios
"Match all" a fait l'affaire. Je vous remercie. Sans "Match all", sshd ne parvient pas à démarrer.
Vladimir Kondratyev
3

Vous pouvez le faire de différentes manières - premièrement, vous pouvez exécuter de manière concise un deuxième démon sshd sur un port différent avec une configuration différente - c'est un peu un bidouillage, mais avec un peu de travail en bloc, cela devrait fonctionner correctement.

Vous pouvez également 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.

Mitchellhislop
la source
-1

vous pouvez simplement aller dans le fichier / etc / ssh / sshd_config et ajouter une ligne Pour permettre -> AllowUsers user1 To Deny ---> DenyUsers user2

nous pouvons autoriser / refuser la connexion pour un ensemble particulier d'hôtes à l'aide des fichiers hosts.allow ou hosts.deny situés dans le dossier / etc

Sharan
la source
-1

Pour des raisons de sécurité, vous pouvez avoir besoin de bloquer certains accès utilisateur SSH à Linux.

Editez le fichier sshd_config, l’emplacement sera parfois différent en fonction de la distribution Linux, mais c’est généralement dans / etc / ssh /.

Ouvrez le fichier lorsque vous êtes connecté en tant que root:

# vi /etc/ssh/sshd_config

Insérer une ligne à la fin du fichier de configuration: -

DenyUsers username1 username2 username3 username4

Enregistrez-le et redémarrez les services SSH. Fondamentalement, nom d'utilisateur1, nom d'utilisateur2, nom d'utilisateur3 et nom d'utilisateur4. La connexion SSH est interdite.

Exécutez la commande ci-dessous pour redémarrer le même: -

# systemctl restart sshd

L'exigence a été faite. S'il vous plaît prendre le SSH de ces utilisateurs et votre obtiendrez l'erreur "Accès refusé"

Technologies Everdata
la source
1
La question portait sur la désactivation de la connexion par mot de passe (mais en conservant la connexion avec l'authentification par clé).
Gerald Schneider