¿Cómo reenviar la key ssh en un posible file de repository de git en la máquina de destino desde el origen?

Estoy tratando de configurar y poder anotar un repository de git desde bitbucket y ponerlo en la máquina de destino. La máquina de control (mi PC) tiene la key ssh privada bitbucket. La key pública se carga en bitbucket y el acceso ssh se testing y funciona.

Aquí está el código de la tarea ansible yml:

- name: Checkout application become: no git: repo=git@bitbucket.org:bitbucketusername/deployment.git dest=/tmp/myapp accept_hostkey=True key_file=/home/me/.ssh/bitbucket_ssh_key 

Aquí está el error:

 Warning: Identity file /home/me/.ssh/bitbucket_ssh_key not accessible: No such file or directory. Permission denied (publickey) 

Entonces, ¿entiendo que el reenvío de keys no funciona? Esto es extraño, porque en mi ~/.ssh/config tengo reenvío habilitado para la máquina de destino 111.222.333.444:

 Host 111.222.333.444 ForwardAgent yes 

Entonces, ¿qué está mal y cómo obtengo mi repo de bitbucket en mi máquina objective? Estoy usando ansible 2.1.1.0.

Editar: aquí está la parte donde se queja cuando el indicador -vvvv está -vvvv :

 TASK [Checkout application] ********************************************* task path: /home/me/path/to/the/ansible/playbook.yml:49 <111.222.333.444> ESTABLISH SSH CONNECTION FOR USER: deploy <111.222.333.444> SSH: EXEC ssh -C -vvv -o ForwardAgent=yes -o StrictHostKeyChecking=no -o 'IdentityFile="/home/me/.ssh/the_ssh_key"' -o KbdInteractiveAuthentication=no -o PrefernetworkingAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=deploy -o ConnectTimeout=10 111.222.333.444 '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1477655760.17-42684399995480 `" && echo ansible-tmp-1477655760.17-42684399995480="` echo $HOME/.ansible/tmp/ansible-tmp-1477655760.17-42684399995480 `" ) && sleep 0'"'"'' <111.222.333.444> PUT /tmp/tmp0NYGtg TO /home/deploy/.ansible/tmp/ansible-tmp-1477655760.17-42684399995480/git <111.222.333.444> SSH: EXEC sftp -b - -C -vvv -o ForwardAgent=yes -o StrictHostKeyChecking=no -o 'IdentityFile="/home/me/.ssh/the_ssh_key"' -o KbdInteractiveAuthentication=no -o PrefernetworkingAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=deploy -o ConnectTimeout=10 '[111.222.333.444]' <111.222.333.444> ESTABLISH SSH CONNECTION FOR USER: deploy <111.222.333.444> SSH: EXEC ssh -C -vvv -o ForwardAgent=yes -o StrictHostKeyChecking=no -o 'IdentityFile="/home/me/.ssh/the_ssh_key"' -o KbdInteractiveAuthentication=no -o PrefernetworkingAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=deploy -o ConnectTimeout=10 -tt 111.222.333.444 '/bin/sh -c '"'"'LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /home/deploy/.ansible/tmp/ansible-tmp-1477655760.17-42684399995480/git; rm -rf "/home/deploy/.ansible/tmp/ansible-tmp-1477655760.17-42684399995480/" > /dev/null 2>&1 && sleep 0'"'"'' fatal: [app1]: FAILED! => {"changed": false, "cmd": "/usr/bin/git ls-remote '' -h refs/heads/HEAD", "failed": true, "invocation": {"module_args": {"accept_hostkey": true, "bare": false, "clone": true, "depth": null, "dest": "/tmp/myapp", "executable": null, "force": false, "key_file": "/home/me/.ssh/bitbucket_ssh_key", "recursive": true, "reference": null, "refspec": null, "remote": "origin", "repo": "git@bitbucket.org:memeares/deployment.git", "ssh_opts": null, "track_submodules": false, "update": true, "verify_commit": false, "version": "HEAD"}, "module_name": "git"}, "msg": "Warning: Identity file /home/me/.ssh/bitbucket_ssh_key not accessible: No such file or directory. Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.", "rc": 128, "stderr": "Warning: Identity file /home/me/.ssh/bitbucket_ssh_key not accessible: No such file or directory. Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. ", "stdout": "", "stdout_lines": []} 

Y también he configurado el reenvío en el file ansible.cfg (como se ve en el resultado anterior):

 [ssh_connection] # Enable SSH Agent Forwarding so that the private key used to be able to # checkout from git does not have to be on the server ssh_args=-o ForwardAgent=yes 

El error final que lo solucionó fue agregar la key a ssh-agent mediante ssh-add ~/.ssh/the_ssh_key .

Creo que en mi caso fue una combinación de errores lo que me llevó a este punto, ya que anteriormente había agregado la key usando ssh-add pero había destruido la instancia después de intentar depurar otros errores.

Como reference, la list de verificación de debugging .

Y cosas que no se mencionan allí:

  • Si la key no es id_rsa , entonces especifíquela manualmente usando la -i the_ssh_key
  • Asegúrese de que el server tenga una copy de la key pública el the_ssh_key.pub en el directory ~/.ssh del usuario correspondiente.
  • Asegúrese de que /etc/ssh/sshd_config tenga AllowAgentForwarding yes
  • ssh-agent -L le dice si el agente de ssh "conoce" su key ssh en cuestión. (No sé por qué es necesario cuando se especifica el file de key con ssh -i the_ssh_key )
  • Incluya -o AllowAgentForwarding=yes cuando se filtre desde la máquina de control.