我有一个在我的服务器(用户抢)下的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为相关服务器使用不同的密钥。