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!
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.
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
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.
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.
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]