web-dev-qa-db-fra.com

Erreur SSH: autorisation refusée (publickey, mot de passe) dans Ansible

Je suis nouveau à ansible et j'essaie de le mettre en œuvre. J'ai essayé tous les moyens possibles présents sur Internet et toutes les questions qui s'y rapportent, mais je ne parviens toujours pas à résoudre l'erreur. Aidez-moi, s'il vous plaît.

J'ai installé ansible Playbook sur mon Macbook. J'ai créé une VM dont l'adresse IP est 10.4.1.141 et l'adresse IP de l'hôte 10.4.1.140.

J'ai essayé de me connecter à ma VM en utilisant Host via ssh. Elle s'est connectée à l'aide de la commande suivante:

ssh [email protected]

et j'ai eu l'accès Shell. Cela signifie que ma ssh fonctionne bien.

Maintenant, j'ai essayé la commande suivante pour Ansible:

ansible all -m ping

Et le contenu du /etc/ansible/Host est 10.4.1.141

Ensuite, il affiche l'erreur suivante:

10.4.1.141 | FAILED => Erreur SSH: autorisation refusée (publickey, mot de passe).

lors de la connexion à 10.4.1.141:22 Il est parfois utile de réexécuter la commande à l'aide de -vvvv, qui affiche la sortie de débogage SSH pour faciliter le diagnostic du problème.

Ensuite, j'ai essayé de créer le fichier config dans le dossier .ssh/ sur la machine hôte, mais l'erreur est toujours la même.

Le contenu du fichier config est:

  IdentityFile ~/.ssh/id_rsa

qui est le chemin de ma clé privée.

Ensuite, j'ai exécuté la même commande ansible all -m ping et j'ai encore la même erreur.

Quand j'ai essayé une autre commande 

ansible all -m ping -u user --ask-pass

Ensuite, il a demandé le mot de passe SSH, je l’ai donné (sacrément le mot de passe est correct), mais j’ai eu cette erreur:

10.4.1.141 | FAILED => FAILED: L'authentification a échoué.

Ceci est le journal utilisant -vvvv:

<10.4.1.141> ESTABLISH CONNECTION FOR USER: rajatg <10.4.1.141> REMOTE_MODULE ping <10.4.1.141> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/Users/rajatg/.ansible/cp/ansible-ssh-%h-%p-%r" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 10.4.1.141 /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1445512455.7-116096114788007 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1445512455.7-116096114788007 && echo $HOME/.ansible/tmp/ansible-tmp-1445512455.7-116096114788007' 10.4.1.141 | FAILED => SSH Error: Permission denied (publickey,password). while connecting to 10.4.1.141:22 It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.

Je ne suis toujours pas en mesure de comprendre quel est le problème. C'est mon dernier choix de le demander ici après avoir fait toutes mes recherches. Le dernier lien auquel je faisais référence est https://valdhaus.co/writings/ansible-mac-osx/

S'il vous plaît, aidez-moi, je suis coincé. Merci d'avance!

16
Rajat Gupta

J'ai résolu le problème. Le problème était dans mon /etc/ansible/hosts.

Le contenu écrit dans /etc/ansible/hosts était 10.4.1.141. Mais lorsque je l'ai changé en [email protected], le problème a été résolu. 

Merci à tous pour votre soutien et pour me donner plus de clarté sur le problème en vous aidant des commentaires.

25
Rajat Gupta

La plupart des problèmes surviennent lors de la connexion de machines Ubuntu à des hôtes. Solution Ansible requis l'utilisateur auquel vous souhaitez vous connecter car Ubuntu n'a pas d'utilisateur root par défaut.

pour le fichier Hosts 

[Test-Web-Server]

10.192.168.10 ansible_ssh_pass = toto ansible_ssh_user = toto

3
user10126649

Si vous vous connectez avec ssh [email protected]:

Option 1

Ensuite, assurez-vous que dans votre fichier hosts dans etc\ansible, vous avez: 

[server01]
10.4.1.141

puis dans etc\ansible exécuter: ansible all -m ping -u user --ask-pass

Option 2

Si vous voulez vous connecter sans taper le mot de passe ssh, ajoutez etc\ansible dans votre fichier hosts à: 

[server01]
10.4.1.141 ansible_ssh_pass=xxx ansible_ssh_user=user

puis dans etc\ansible exécuter: ansible all -m ping

pour moi, cela a fonctionné dans les deux sens.

1
bebs

Si vous exécutez ansible avec Sudo, par exemple

Sudo ansible -m ping all

n'oubliez pas que la clé publique de root doit se trouver également sur le serveur que vous souhaitez atteindre, pas seulement la clé publique de votre utilisateur non root. Sinon, vous obtenez également le message d'erreur ci-dessus.

1

J'ai corrigé ce problème aussi.

Mon problème était également dans mon fichier hosts /etc/ansible/hosts

J'ai changé mon fichier hosts de 172.28.2.101 À name-of-server-in-ssh-config

J'ai eu l'adresse IP dans le fichier hosts. Étant donné que les configurations SSH sont déjà configurées pour les noms, je n'ai pas besoin d'utiliser une variable ou un nom d'utilisateur devant les hôtes.

[name-stg-web]
server-name-stg-web[01:02]
1
camdixon