当从cron运行时,来自Bitbucket的hg pull失败

我有一个在我的服务器(用户抢)下的Bitbucket回购的本地副本,我创build了一个脚本,每小时在cron运行,并试图拉和更新本地副本。 我遇到的问题是,即使当我按照cron之外的相同的程序工作正常, hg pull失败。

我以正常的方式设置了一个用于访问Bitbucket的ssh密钥(即, 遵循Bitbucket文档中的指南 ),然后最初克隆了repo

 cd /home/rob hg clone ssh://[email protected]/robjohncox/tools 

/home/rob/bin/update_tools.sh的更新脚本是:

 #! /bin/bash cd /home/rob/tools hg pull >> /tmp/update_tools.log hg update >> /tmp/update_tools.log 

而用户rob的crontab是:

 0 * * * * /home/rob/bin/update_tools.sh 

一切都很简单。 但是,当作业运行时,我们看到对hg pull的调用失败并显示输出

 remote: Permission denied (publickey). 

有没有人有一个想法,为什么这可能会发生 – 是否有一些其他的步骤,我需要采取这样,当cron运行它有权访问相关的公钥? update_tools.sh脚本从shell运行良好。

尝试明确指定ssh命令,例如

 hg pull -e 'ssh -i /location/of/key' 

Cron以最小的shell运行,所以不能访问你的ssh-agent进程,因为SSH环境variables没有设置。

尝试添加像下面这样的〜/ .ssh / config文件

 Host example.com IdentityFile ~/.ssh/id_bitbucket 

告诉ssh为相关服务器使用不同的密钥。