Назад | Перейти на главную страницу

hg pull из Bitbucket не работает при запуске из cron

У меня есть локальная копия репозитория Bitbucket на одном из моих серверов (под пользователем rob), и я создал скрипт, который запускается каждый час в cron и пытается извлечь и обновить локальную копию. У меня проблема в том, что hg pull не работает, даже если я следую той же процедуре вне cron, она работает нормально.

Я настраиваю ключ ssh для доступа к Bitbucket обычным способом (т.е. следовал руководству в документации Bitbucket), а затем репо было изначально клонировано с

cd /home/rob
hg clone ssh://hg@bitbucket.org/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

И crontab для пользователя rob:

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

Все очень просто. Однако, когда задание выполняется, мы видим, что вызов hg pull выходит из строя

remote: Permission denied (publickey).

Кто-нибудь знает, почему это может происходить - есть ли еще какой-то шаг, который мне нужно предпринять, чтобы при запуске cron он имел доступ к соответствующему открытому ключу? В update_tools.sh сценарий отлично работает из оболочки.

Попробуйте явно указать команду ssh, например.

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

Cron работает с минимальной оболочкой, поэтому у него не будет доступа к вашему процессу ssh-agent, потому что переменные среды SSH не установлены.

Попробуйте добавить что-нибудь вроде следующего в ваш файл ~ / .ssh / config

Host example.com
IdentityFile ~/.ssh/id_bitbucket

чтобы указать ssh использовать другой ключ для соответствующего сервера.