hg pull do Bitbucket falha quando executado a partir do cron

5

Eu tenho uma cópia local de um repositório Bitbucket em um dos meus servidores (sob o rob do usuário) e criei um script que é executado a cada hora no cron e tenta fazer com que o & atualize a cópia local. O problema que estou tendo é que hg pull falha, mesmo quando eu sigo o mesmo procedimento fora do cron ele funciona bem.

Eu configurei uma chave ssh para acessar o Bitbucket da maneira normal (ou seja, segui o guia nos documentos do Bitbucket ) e, em seguida, o repositório foi inicialmente clonado com

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

O script de atualização em /home/rob/bin/update_tools.sh é:

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

E o crontab para o usuário rob é:

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

Tudo muito simples. No entanto, quando o trabalho é executado, vemos que a chamada para hg pull falha com a saída

remote: Permission denied (publickey).

Alguém tem uma idéia do porquê isso pode estar acontecendo - existe algum outro passo que eu preciso dar para que, quando o cron rodar, ele tenha acesso à chave pública relevante? O script update_tools.sh é executado corretamente em um shell.

    
por robjohncox 06.05.2014 / 15:19

2 respostas

4

Tente especificar o comando ssh explicitamente, por exemplo,

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

O Cron é executado com um shell mínimo, portanto, não terá acesso ao processo do ssh-agent porque as variáveis de ambiente do SSH não estão definidas.

    
por 06.05.2014 / 15:29
1

Tente adicionar algo como o seguinte ao seu arquivo ~ / .ssh / config

Host example.com
IdentityFile ~/.ssh/id_bitbucket

para dizer ao ssh para usar uma chave diferente para o servidor relevante.

    
por 06.05.2014 / 15:38