J'utilise Ubuntu 14.04.1 (avec OpenSSH 6.6 et libpam-google -hentator 20130529-2).
J'essaie de configurer des connexions SSH où la clé publique s'authentifie (sans mot de passe) et un utilisateur est invité à entrer un code de l'authentificateur de Google.
Suivre / adapter ces instructions m'a donné une invite de mot de passe ainsi qu'une invite Google Auth:
- https://scottlinux.com/2013/06/02/use-google-authenticator-for-two-factor-ssh-authentication-in-linux/
- http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/
- https://wiki.archlinux.org/index.php/Google_Authenticator et https://wiki.archlinux.org/index.php/SSH_keys#Two-factor_authentication_and_public_keys
- https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-two-factor-authentication
J'ai installé le package, modifié mes fichiers /etc/ssh/sshd_config
et/etc/pam.d/ssh
Dans /etc/ssh/sshd_config
:
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
UsePAM yes
et en bas de /etc/pam.d/ssh
:
auth required pam_google_authenticator.so nullok # (I want to give everyone a chance to set up their 2FA before removing "nullok")
Je sais que PAM dépend de l'ordre, mais l'est sshd_config
aussi?
Qu'est-ce que je fais mal? Toute aide serait appréciée.
PasswordAuthentication no
, mais ce n'était pas ça. Le problème est / était que j'avais / haveControlMaster auto
et desControlPath
directives dans mon fichier ~ / .ssh / config. Je voulais m'assurer de ne pas m'enfermer, donc je laisserais toujours une session SSH ouverte. Étant donné que mon ordinateur ne ferait que les réutiliser, je suis toujours entré sans que le système ne demande un jeton. J'ai marqué votre réponse comme correcte, car quelqu'un qui la suivrait aurait en effet une configuration de travail. Merci!PasswordAuthentication no
,ChallengeResponseAuthentication yes
,AuthenticationMethods publickey,keyboard-interactive
etUsePAM yes
danssshd_config
. Il valide ma clé , puis me demande mon jeton Google Authenticator et me demande également mon mot de passe. Me fait faire les trois - je ne peux en sauter aucun. J'ai également essayéAuthenticationMethods publickey,keyboard-interactive:pam
comme suggéré par la page de manuel, mais cela n'a rien changé. Des idées?@include common-auth
ligne que les réponses montrent. Je pensais juste que c'était un commentaire pour lapam_google_authenticator
ligne dans /etc/pam.d/sshd au début.auth substack password-auth
), mais votre commentaire a résolu mon problème!J'ai finalement pu faire fonctionner cela en plaçant
auth [success=done new_authtok_reqd=done default=die] pam_google_authenticator.so nullok
en haut de/etc/pam.d/sshd
.Selon la page de manuel pam.d :
success=done
signifie que si Google Authenticator se déconnecte, aucune autre authentification ne sera effectuée, ce qui signifie aucune invite de mot de passe supplémentaire.default=die
signifie que si Google Authenticator rejette la tentative de connexion, l'authentification échouera immédiatement, ignorant l'invite de mot de passe.Il en
[success=done new_authtok_reqd=done default=die]
est de même d'un mélange entre les valeurs de contrôlesufficient
etrequisite
, car nous voulons un comportement des deux: en cas de succès, se terminer immédiatement (suffisant), et en cas d'échec, se terminer également immédiatement (requis).Notez que l'
nullok
argument de pam_google_authenticator.so signifie que si~/.google_authenticator
aucun fichier n'est trouvé pour un utilisateur, l'authentification par clé publique se déroule normalement. C'est utile si je veux verrouiller uniquement un sous-ensemble de mes comptes avec 2FA.la source
La réponse de Linus Kendall devrait fonctionner sur les anciens systèmes, mais sur les machines Linux plus récentes, c'est problématique; sur mon serveur web basé sur linux arch, cette configuration a pour résultat que pam demande mon code d'authentification et mon mot de passe après avoir reçu ma clé ssh (c'est-à-dire que j'ai besoin des 3).
Une solution plus simple qui empêche ce problème et qui devrait fonctionner sur chaque système consiste à modifier l'entrée en
/etc/pam.d/sshd
:Et puis pour apporter les mêmes modifications à `` / etc / ssh / sshd` que Linus a mentionné:
Cela devrait vous demander votre jeton d'authentification après que le serveur a accepté votre clé publique. Il ne devrait pas vous demander votre mot de passe.
En passant, si vous souhaitez avoir un compte utilisateur sftp, vous devrez probablement contourner l'authentificateur google pour le faire fonctionner. Voici une suggestion sur la façon de le faire en toute sécurité en utilisant une prison sftp. Dans
etc/ssh/sshd_config
:Vous devez faire les autorisations sur / chemin / vers / ftp / dir écriture racine uniquement (par exemple
chown root:root /path/to/ftp/dir
,chmod 755 /path/to/ftp/dir
. Tous les parents , au- dessus de ce répertoire a également besoin d' autorisations sécurisées. La façon dont je le fais habituellement c'est en faisant le répertoire chroot/home/shared/user
, la création d' un répertoire là-bas (par exemple «données»), puis monter le répertoire que je veux partager comme ceci:sudo mount -o bind /path/to/ftp/dir /home/shared/user/data
Si vous suivez toutes ces étapes, vous aurez une clé publique + un identifiant google authentifiant pour vos utilisateurs ssh et un compte sftp protégé par mot de passe pour le transfert de données.
la source