一个奇怪的“致命:无法从远程存储库读取。”用crontab

时间:2014-01-14 14:00:56

标签: git crontab

我在我的localhost中使用git init --bare example.git创建git repo,用户是git。

我使用root进行git clone,用crontab每分钟运行一次,命令为:

*/1 * * * * git --git-dir=/opt/xxx/.git --work-tree=/opt/xxx pull 1>>/tmp/git.log 2>&1

输出日志是:

  

权限被拒绝(publickey,键盘交互式)。

     

致命:无法从远程存储库中读取。

     

请确保您拥有正确的访问权限和存储库   存在。

然后我尝试:

 */1 * * * * cd /opt/xxx/ && git pull 1>>/tmp/git2.log 2>&1

但输出是一样的。

如果我在命令行中运行,一切正常:

  

已经是最新的。

我不知道为什么不能用crontab运行?

1 个答案:

答案 0 :(得分:4)

基于代理的身份验证要求SSH进程可以访问$ SSH_AUTH_SOCK环境变量,但在通过crontab运行时不会设置该变量。您可能需要考虑切换到无密码密钥对或匿名身份验证方法。

如果这不是一个选项,您可以将$ SSH_AUTH_SOCK环境变量(可能还有$ SSH_AGENT_PID)的内容写入本地文件,您可以从crontab运行脚本中读取该文件并设置变量以便它们可用于SSH。

最后一个选项是删除crontab条目并手动启动作为守护程序运行的shell脚本并定期执行拉动。