J'utilise ansible pour approvisionner mon cluster de production Centos 7. Malheureusement, l'exécution des commandes ci-dessous se traduit par ansibleTiemout
et les modules d'authentification enfichables Linux (pam) error conversation failed
.
La même commande ansible fonctionne bien, exécutée contre un laboratoire virtuel fou de vagrant cases.
$ ansible master_server -m yum -a 'name=vim state=installed' -b -K -u lukas -vvvv
123.123.123.123 | FAILED! => {
"msg": "Timeout (7s) waiting for privilege escalation Prompt: \u001b[?1h\u001b=\r\r"
}
# /var/log/secure
Aug 26 13:36:19 master_server Sudo: pam_unix(Sudo:auth): conversation failed
Aug 26 13:36:19 master_server Sudo: pam_unix(Sudo:auth): auth could not identify password for [lukas]
J'ai trouvé le problème. Il s'est avéré que PAM's problème de module d'authentification ! Permettez-moi de décrire comment je suis arrivé à la solution.
J'ai configuré ma machine pour le débogage - c'est-à-dire que j'avais quatre fenêtres de terminal ouvertes.
ansible prduction_server -m yum -a 'name=vim state=installed' -b -K -u username
journalctl -f
(journal à l'échelle du système).tail -f /var/log/secure
(journal pour sshd).vi /etc/pam.d/Sudo
fichier.Chaque fois, j'exécute une commande à partir de 1er terminal J'ai ces erreurs:
# ansible error - on local machine
Timeout (7s) waiting for privilege escalation Prompt error.
# sshd error - on remote machine
pam_unix(Sudo:auth): conversation failed
pam_unix(Sudo:auth): [username]
J'ai montré toute ma configuration à mon collègue, et il m'a dit que l'erreur devait faire quelque chose avec "PAM". Franchement, c'était la première fois que j'entendais parler de PAM . J'ai donc dû lire ceci Tutoriel PAM . J'ai compris que cette erreur se rapporte à l'interface auth située dans /etc/pam.d/Sudo module. En fouillant sur Internet, je suis tombé sur ce pam_permit.so
module avec sufficient
drapeau de contrôle, qui a résolu mon problème!
Fondamentalement, ce que j'ai ajouté était auth sufficient pam_permit.so
ligne vers /etc/pam.d/Sudo
fichier. Regardez l'exemple ci-dessous.
$ cat /etc/pam.d/Sudo
#%PAM-1.0
# Fixing ssh "auth could not identify password for [username]"
auth sufficient pam_permit.so
# Below is original config
auth include system-auth
account include system-auth
password include system-auth
session optional pam_keyinit.so revoke
session required pam_limits.so
session include system-auth
J'ai passé 4 jours pour arriver à cette solution. Je suis tombé sur des dizaines de solutions qui n'ont pas fonctionné pour moi, à partir de "mot de passe Sudo dupliqué dans les fichiers ansible/fichier de configuration", "configuration spécifique ldap" = pour obtenir des conseils d'administrateurs système toujours grincheux!
Depuis, je ne suis pas expert en PAM, je ne sais pas si ce correctif affecte d'autres aspects du système, alors soyez prudent lorsque vous copiez aveuglément en collant ce code! Cependant, si vous êtes expert en PAM, veuillez partager avec nous des solutions ou des suggestions alternatives. Merci !
En supposant que l'utilisateur lukas est un compte local, vous devriez regarder comment le module pam_unix.so est déclaré dans votre fichier pam system-auth. Mais plus d'informations sur le compte d'utilisateur et la configuration de pam sont nécessaires pour une réponse spécifique.
En ajoutant auth suffisant pam_permit.so suffit pour y accéder. Son utilisation dans tout autre environnement de test que celui le plus dangereux ne serait pas recommandée. Depuis la page de manuel pam_permit:
pam_permit is a PAM module that always permit access. It does nothing else.
Donc, ajouter pam_permit.so comme suffisant pour l'authentification de cette manière sera complètement contourner la sécurité pour tous les utilisateurs.
J'ai eu la même erreur lorsque j'ai essayé de redémarrer Apache2 avec Sudo service Apache2 restart
Lors de la connexion à root, j'ai pu voir la véritable erreur liée à la configuration d'Apache2. Il s'est avéré que j'ai supprimé les fichiers de certificat SSL d'un site il y a quelques mois, mais je n'ai pas désactivé le site dans Apache2. a2dissite
a fait l'affaire.