无法使用crontab运行git命令

时间:2019-05-03 09:09:12

标签: git ubuntu github cron git-fetch

我正在设置服务器,并且我希望服务器中的git存储库与原始服务器(Github)保持最新。我试图运行一个cron作业,该作业每分钟更新一次服务器中的存储库。在我的Mac PC上成功了。

crontab:

* * * * * bash /home/ubuntu/venv/App/deployer.bash >> /home/ubuntu/venv/App/Logs/deployer.txt 2>&1

这是服务器中发生故障的部分:

git fetch --all 
git reset --hard origin/master

错误:

Fetching origin
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.
error: Could not fetch origin

在crontab之外一切正常。  例如 : 我可以在没有sudo的情况下执行git repo中的所有git命令。 使用sudo时,我会得到与cronjob中相同的错误。

更新:

找出导致问题的原因:

crontab表达式中的

2>&1正在写入标准错误,这是非常正确的。 当我在crontab之外运行命令时,它从未要求进行身份验证。但是在crontab的每次执行中,命令都要求进行身份验证

现在有人可以解释为什么这会导致这样的错误吗?

1 个答案:

答案 0 :(得分:0)

每次执行git命令之前,都将ssh密钥添加到ssh-agent中。这就是我所做的。

我在cronjob中添加了以下命令:

eval `ssh-agent -s` && ssh-add ~/.ssh/id_rsa && ssh-add -l
git fetch --all && sleep 2s && git reset --hard origin/master