2011-11-03 21 views
10

Sto provando a eseguire un git push da cron. Quando eseguo il comando in modo interattivo sulla shell sta andando bene. Quando si esegue il comando dal crontab di mio utente, cron recapita il messaggio di erroregit push via cron

Permission denied (publickey). 

presumo che non ha a che fare con la ricerca o la lettura del mio ~/.ssh/id_rsa, come posso gatto il file da cron bene . UID e EUID sono impostati bene nel cron job. - Qualche idea?

UPDATE

ho ottenuto che funziona quando si forniscono l'ambiente SSH_AUTH_SOCK chiave per il mio lavoro cron, ma io sono preoccupato del fatto che questo è valido solo fino a quando ho effettuato l'accesso. Sto cercando una soluzione che funziona indipendentemente dagli accessi interattivi.

+0

Cosa hai fatto per risolvere questo problema? Per me non era la variabile SSH_AUTH_SOCK (ho provato a passare questo nella riga crontab). Ottengo un errore che git credential-osxkeychain non è un comando git valido. –

+0

@StephenTurner Accedo alla macchina senza l'inoltro dell'agent. Inizio l'agente ssh, catturando il suo output in un file. I (shell) 'sorgente' questo file sulla shell e richiama ssh-add (tutto questo in uno script di shell). L'ultimo comando richiederà l'inserimento della passphrase. Finché ssh-agent continua ad essere eseguito, il lavoro cron deve solo dare origine al suddetto file, quindi i comandi git push vengono eseguiti correttamente. - Non posso commentare 'git credential-osxkeychain', comunque (il mio funziona su linux). – ThomasH

risposta

5

Come explained here, può essere dovuto alla mancanza di conoscenza dalla shell della cron session dell'agente ssh.
In questo caso (ad esempio se si utilizzano chiavi ssh private con passphrase), keychain è la solita soluzione (come mentioned here).
Ulteriori dettagli in questo esempio: "Passwordless connections via OpenSSH using public key authentication, keychain and AgentForward".

+0

Ottima risposta. Ciò forniva lo sfondo necessario per il mio armeggiare. – ThomasH

+0

Questo non sembra funzionare per me. Ottengo un errore che git credential-osxkeychain non è un comando git valido. Grazie. –

+0

@StephenTurner sarebbe http://stackoverflow.com/questions/11745504/remove-credential-osxkeychain essere utile? – VonC