Ansible con Github: Permiso denegado (Publickey)

Intento entender la configuration de GitHub ssh con Ansible (estoy trabajando en el libro Ansible: Up & Running). Me estoy encontrando con dos problemas.

Permiso denegado (key pública) : cuando ejecuté por primera vez el ansible-playbook mezzanine.yml playbook, obtuve un permiso denegado:

 failed: [web] => {"cmd": "/usr/bin/git ls-remote '' -h refs/heads/HEAD", "failed": true, "rc": 128} stderr: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. msg: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. FATAL: all hosts have already failed -- aborting 

Ok, es justo, veo que varias personas han tenido este problema. Así que salté al apéndice A sobre la ejecución de Git con SSH y decía ejecutar el ssh-agent y agregar la key pública id_rsa:

 eval `ssh-agent -s` ssh-add ~/.ssh/id_rsa 

Salida: Identity Added Ejecuté ssh-agent -l para verificar y obtuve la cadena larga: 2048 e3:fb:... Pero obtuve el mismo resultado. Así que revisé los documentos de Github en generaciones de keys ssh y resolución de problemas que recomendaban actualizar el file de configuration ssh en mi equipo host:

 Host github.com User git Port 22 Hostname github.com IdentityFile ~/.ssh/id_rsa TCPKeepAlive yes IdentitiesOnly yes 

Pero esto todavía proporciona el mismo error. Entonces, en este punto, empiezo a pensar que es mi file rsa, lo que me lleva a mi segundo problema.

Problemas key de generación : Intenté generar un certificate adicional para usar, porque la testing de Github arrojó otro error de "Permiso denegado (key pública)".

 Warning: Permanently added the RSA host key for IP address '192.30.252.131' to the list of known hosts. Permission denied (publickey). 

Seguí las instrucciones de Github desde cero y generé una nueva key con un nombre diferente.

 ssh-keygen -t rsa -b 4096 -C "me@example.com" 

No ingresé una frase de contraseña y la guardé en la carpeta .ssh con el nombre git_rsa.pub. Ejecuté la misma testing y obtuve lo siguiente:

 $ ssh -i ~/.ssh/git_rsa.pub -T git@github.com @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for '/Users/antonioalaniz1/.ssh/git_rsa.pub' are too open. It is requinetworking that your private key files are NOT accessible by others. This private key will be ignonetworking. bad permissions: ignore key: ~/.ssh/github_rsa.pub Permission denied (publickey). 

Comprobé los permissions e hice un chmod 700 en el file y sigo recibiendo el Permission denied (publickey) . Incluso intenté ingresar la key en mi count de Github, pero primero recibí un post de que el file de key debe comenzar con ssh-rsa . Entonces comencé a investigar y piratear. Comencé simplemente por ingresar la cadena larga en el file (comenzó con –BEGIN PRIVATE KEY–, pero omití esa parte después de que falló); sin embargo, Github no lo acepta, diciendo que es inválido.

Este es mi command Ansible en el file YAML:

 - name: check out the repository on the host git: repo={{ repo_url }} dest={{ proj_path }} accept_hostkey=yes vars: repo_url: git@github.com:lorin/mezzanine-example.git 

Este es mi file ansible.cfg con ForwardAgent configurado:

 [defaults] hostfile = hosts remote_user = vagrant private_key_file = .vagrant/machines/default/virtualbox/private_key host_key_checking = False [ssh_connection] ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o ForwardAgent=yes 

La caja es un Ubuntu Trusty64 que usa Mac OS. Si alguien pudiera darme una pista sobre los permissions de file y / o la generación de la key Github, lo agradecería.

Sospecho que el problema de permissions de la key se debe a que está pasando la key pública en lugar de la key privada como el aumento a "ssh -i". Pruebe esto en su lugar:

 ssh -i ~/.ssh/git_rsa -T git@github.com 

(Tenga en count que es git_rsa y no git_rsa.pub).

Si eso funciona, entonces asegúrate de que esté en tu ssh-agent. Para agregar:

 ssh-add ~/.ssh/git_rsa 

Para verificar:

 ssh-add -l 

Luego, compruebe que Ansible respeta el reenvío del agente haciendo:

 ansible web -a "ssh-add -l" 

Finalmente, verifique que pueda comunicarse con GitHub a través de ssh haciendo:

 ansible web -a "ssh -T git@github.com" 

Deberías ver algo como:

 web | FAILED | rc=1 >> Hi lorin! You've successfully authenticated, but GitHub does not provide shell access. 

Tuve el mismo problema, me llevó algo de time, pero encontré la solución.

El problema es que la URL es incorrecta.

Solo intenta cambiarlo a:

 repo_url: git://github.com/lorin/mezzanine-example.git