2011-11-03 70 views
10

我試圖從cron運行git push。當我在shell上以交互方式執行命令時,它很好。當從我的用戶的crontab命令,cron的傳遞錯誤信息通過cron推git

Permission denied (publickey). 

我相信它不會找到或閱讀我的〜/ .ssh/id_rsa做的,因爲我可以貓從cron好嗎文件。 UID和EUID在cron工作中設置得很好。 - 有任何想法嗎?

UPDATE

我提供了環境關鍵SSH_AUTH_SOCK我的cron作業時它的工作,但我擔心,這僅僅是有效,只要我參與的記錄。我正在尋找一個解決方案它獨立於交互式登錄。

+0

你最終做了什麼來解決這個問題?對我來說,這不是SSH_AUTH_SOCK變量(嘗試在crontab行中傳遞這個變量)。我得到一個錯誤,git credential-osxkeychain不是有效的git命令。 –

+0

@StephenTurner我在沒有代理轉發的情況下登錄到本機。我啓動ssh代理,將其輸出捕獲到一個文件中。我(外殼)在shell上'源'這個文件,並調用ssh-add(所有這些都在shell腳本中)。最後一條命令將要求輸入密碼短語。只要ssh-agent繼續運行,cron作業只需獲取所述文件,然後git push命令就可以正常運行。 - 我不能評論'git credential-osxkeychain',儘管(我的Linux在運行)。 – ThomasH

回答

5

由於explained here,這可能是由於缺乏來自ssh代理的cron會話shell的知識。
如果是這種情況(即,如果您使用私鑰ssh密鑰和密碼短語),keychain是通常的解決方案(如mentioned here)。
本示例中的更多詳細信息:「Passwordless connections via OpenSSH using public key authentication, keychain and AgentForward」。

+0

優秀的答案。這爲我的修補提供了必要的背景。 – ThomasH

+0

這似乎不適用於我。我得到一個錯誤,git credential-osxkeychain不是有效的git命令。謝謝。 –

+0

@StephenTurner會http://stackoverflow.com/questions/11745504/remove-credential-osxkeychain有幫助嗎? – VonC