2011-11-03 43 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