web-dev-qa-db-fra.com

Comment exécuter un playbook ansible avec une clé privée ssh protégée par mot de passe?

J'ai un groupe de mise à l'échelle automatique sur Amazon EC2 et j'ai ajouté ma clé publique lorsque je crée AMI avec packer pour pouvoir exécuter ansible-playbook et ssh sur les hôtes.

Mais il y a un problème lorsque j'exécute le playbook comme ceci ansible-playbook load.yml Je reçois ce message dont j'ai besoin pour écrire mon mot de passe

Saisissez la phrase secrète pour la clé '/Users/XXX/.ssh/id_rsa':
Saisissez la phrase secrète pour la clé '/Users/XXX/.ssh/id_rsa':
Saisissez la phrase secrète pour la clé '/Users/XXX/.ssh/id_rsa':

Le problème est qu'il n'accepte pas mon mot de passe (je suis sûr que je tape correctement mon mot de passe).

J'ai ensuite découvert que je pouvais envoyer mon mot de passe avec ask-pass flag donc j'ai changé ma commande en ansible-playbook load.yml --ask-pass et j'ai obtenu des progrès mais encore une fois pour une autre tâche, il demande à nouveau le mot de passe et il n'a pas accepté mon mot de passe

[WARNING]: Unable to parse /etc/ansible/hosts as an inventory source

 [WARNING]: No inventory was parsed, only implicit localhost is available

 [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'


PLAY [localhost] *************************************************************************************************************

TASK [ec2_instance_facts] ****************************************************************************************************
ok: [localhost]

TASK [add_Host] **************************************************************************************************************
changed: [localhost] => (item=xx.xxx.xx.xxx)
changed: [localhost] => (item=yy.yyy.yyy.yyy)

PLAY [instances] *************************************************************************************************************

TASK [Copy gatling.conf] *****************************************************************************************************
ok: [xx.xxx.xx.xxx]
ok: [yy.yyy.yyy.yyy]
Enter passphrase for key '/Users/ccc/.ssh/id_rsa': Enter passphrase for key '/Users/ccc/.ssh/id_rsa':
Enter passphrase for key '/Users/ccc/.ssh/id_rsa':
Enter passphrase for key '/Users/ccc/.ssh/id_rsa':
Enter passphrase for key '/Users/ccc/.ssh/id_rsa':

Si je n'utilise pas ask-pass signaler même la tâche [Copy gatling.conf] ne se termine pas et se plaindre n'a pas pu accéder aux hôtes. En ajoutant le drapeau, cette partie se passe bien, mais ma prochaine tâche demande à nouveau la passe.

Comment dois-je résoudre ce problème? Qu'est-ce que je fais mal ici?

12
Am1rr3zA

Je l'ai résolu en exécutant ssh-add une fois et utilisez-le comme s'il n'était pas protégé par mot de passe.

7
Am1rr3zA

In ansible Il n'y a pas d'option pour stocker la clé privée protégée par mot de passe

Pour cela, nous devons ajouter la clé privée protégée par mot de passe dans l'agent ssh

Démarrez l'agent ssh en arrière-plan.

# eval "$(ssh-agent -s)"

Ajouter la clé privée SSH à l'agent ssh

# ssh-add ~/.ssh/id_rsa

Essayez maintenant d'exécuter ansible-playbook et ssh sur les hôtes.

20
Javeed Shakeel