2011-11-03 12 views
10

Estoy tratando de ejecutar un git push de cron. Cuando hago el comando interactivamente en el caparazón, está pasando bien. Cuando se ejecuta el comando desde crontab de mi usuario, cron entrega el mensaje de errorgit push a través de cron

Permission denied (publickey). 

supongo que no tiene que ver con encontrar o leer mi ~/.ssh/id_rsa, como pueda gato el archivo desde cron bien . UID y EUID están bien definidos en el trabajo cron. - ¿Algunas ideas?

ACTUALIZACIÓN

Lo tengo trabajo cuando se suministra el medio ambiente SSH_AUTH_SOCK clave de mi trabajo cron, pero me preocupa que esto sólo es válida siempre y cuando estoy conectado. Estoy en busca de una solución que funciona independientemente de los inicios de sesión interactivos.

+0

¿Qué terminaste haciendo para resolver esto? Para mí no era la variable SSH_AUTH_SOCK (intenté pasar esto en la línea de crontab). Me sale un error que git credential-osxkeychain no es un comando válido de git. –

+0

@StephenTurner Me conecto a la máquina sin reenvío de agente. Comienzo el agente ssh, capturando su salida a un archivo. I (shell) 'fuente' este archivo en el shell y llame a ssh-add (todo esto en un script de shell). El último comando requerirá la entrada de la frase de contraseña. Mientras el ssh-agent continúe ejecutándose, el trabajo cron solo tiene que obtener el archivo dicho, y luego los comandos git push se ejecutan muy bien. - No puedo comentar sobre 'git credential-osxkeychain', sin embargo (el mío se ejecuta en Linux). – ThomasH

Respuesta

5

Como explained here, puede deberse a la falta de conocimiento del shell de sesión cron del agente ssh.
Si ese es el caso (es decir, si está utilizando claves privadas ssh con una frase de contraseña), keychain es la solución habitual (como mentioned here).
Más detalles en este ejemplo: "Passwordless connections via OpenSSH using public key authentication, keychain and AgentForward".

+0

Excelente respuesta. Esto proporcionó el trasfondo necesario para mi retoque. – ThomasH

+0

Esto no pareció funcionar para mí. Me sale un error que git credential-osxkeychain no es un comando válido de git. Gracias. –

+0

@StephenTurner ¿Sería útil http://stackoverflow.com/questions/11745504/remove-credential-osxkeychain? – VonC