hg pull from Bitbucket échoue lors de l'exécution de cron

J'ai une copy locale d'un count Bitbucket sur l'un de mes servers (sous l'user rob), et j'ai créé un script qui s'exécute toutes les heures dans cron et tente d'extraire et de mettre à jour la copy locale. Le problème que j'ai, c'est que hg pull échoue, même si quand je suis la même procédure en dehors de Cron, ça marche bien.

J'ai configuré une key ssh pour accéder à Bitbucket de la manière normale (c.-à-d., Suivi le guide dans les documents Bitbucket ) et ensuite le comptoir a été initialement cloné avec

 cd /home/rob hg clone ssh://hg@bitbucket.org/robjohncox/tools 

Le script de mise à jour à /home/rob/bin/update_tools.sh est:

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

Et le crontab pour user rob est:

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

Tout est très simple. Cependant, lorsque le travail s'exécute, nous voyons que l'appel à l' hg pull échoue avec la sortie

 remote: Permission denied (publickey). 

Est-ce que quelqu'un a une idée de la raison pour laquelle cela se produit? Est-ce qu'il y a une autre étape que je dois prendre pour que, lorsque Cron fonctionne, il a access à la key publique pertinente? Le script update_tools.sh fonctionne update_tools.sh partir d'un shell.

Essayez spécifier la command ssh explicitement, par exemple

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

Cron s'exécute avec un shell minimal, donc n'aura pas access à votre process ssh-agent car les variables d'environnement SSH ne sont pas définies.

Essayez d'append certains éléments comme les suivants à votre file ~ / .ssh / config

 Host example.com IdentityFile ~/.ssh/id_bitbucket 

pour indiquer à ssh d'utiliser une key différente pour le server concerné.