Je voudrais que sshd vérifie la clé publique des utilisateurs puis demande leur mot de passe, plutôt que simplement l'un ou l'autre. Est-ce possible?
Réponses
Trop de publicités?Ceci est enfin disponible à partir de OpenSSH 6.2 (publié en mars 2013), en utilisant l'option de configuration AuthenticationMethods
.
Par exemple, vous pouvez ajouter la ligne suivante à sshd_config
pour exiger à la fois l'authentification par clé publique et par mot de passe :
AuthenticationMethods publickey,password
Lors de la connexion, ssh
et scp
effectueront d'abord une authentification par clé publique, puis demanderont un mot de passe :
$ ssh utilisateur@exemple.org
Authentifié avec un succès partiel.
Mot de passe de utilisateur@exemple.org :
Si vous avez un mot de passe sur votre fichier de clé privée, vous serez bien sûr d'abord invité pour cela. Exemple en utilisant PuTTY :
Utilisation du nom d'utilisateur "utilisateur".
Authentification avec la clé publique "rsa-key-20131221-utilisateur"
Phrase secrète pour la clé "rsa-key-20131221-utilisateur":
Authentification supplémentaire requise
Mot de passe de utilisateur@exemple.org :
OpenSSH dans RHEL/CentOS 6.3 prend désormais en charge cette fonctionnalité, bien que je ne la trouve pas mentionnée dans les notes de version d'OpenSSH. Dans les notes de version de RHEL:
SSH peut désormais être configuré pour exiger plusieurs méthodes d'authentification (alors qu'auparavant SSH autorisait plusieurs méthodes d'authentification parmi lesquelles une seule était nécessaire pour une connexion réussie); par exemple, se connecter à une machine activée pour SSH nécessite à la fois la saisie d'une phrase secrète et d'une clé publique. Les options
RequiredAuthentications1
etRequiredAuthentications2
peuvent être configurées dans le fichier/etc/ssh/sshd_config
pour spécifier les authentifications requises pour une connexion réussie. Par exemple:~]# echo "RequiredAuthentications2 publickey,password" >> /etc/ssh/sshd_config
Pour plus d'informations sur les options
/etc/ssh/sshd_config
mentionnées ci-dessus, reportez-vous à la page de manuel desshd_config
.
Il est possible mais de manière peu élégante et limitée. Tout d'abord, vous n'autorisez que l'authentification par clé publique. Ensuite, dans /etc/ssh/sshd_config
, ajoutez un ForceCommand
qui exécute un script qui vérifiera le mot de passe.
Le script va casser le SFTP à moins que vous vérifiez que la commande est sftp et la laissiez passer sans mot de passe.
Je n'ai jamais essayé ça donc quelqu'un pourrait voir d'autres problèmes.