Como fazer svn update sem senha no crontab

0

Eu sou novo no svn e no ssh. Estou tentando fazer svn update de 5 repositórios no meu sistema local a cada 3 horas no crontab. Então, para conseguir isso, eu configurei ssh passwordless login usando as etapas abaixo:
1. ssh-keygen
2. ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
3. Eu fiz ssh [email protected] Até aqui funciona bem para mim. Consigo fazer o login sem senha. Mas, quando eu tento fazer sudo svn update nos 5 repositórios, ele está proprimindo a senha. Como fazer svn update sem senha. Existe alguma maneira que eu possa fazer atualização dos repositórios a cada 3 horas no cron. Eu me referi a isso , mas não consegui.
Estou usando

'Ubuntu version : Ubuntu 13.04'         
OpenSSH_6.1p1 Debian-4, OpenSSL 1.0.1c 10 May 2012
    
por user3004356 16.12.2013 / 12:09

3 respostas

0

O problema é que, como você usa sudo , o comando svn update é executado como root , portanto, o diretório ~/.ssh de seu usuário normal não é levado em consideração.

Se você tiver que executar a svn update as root, execute as etapas 1 e 2 descritas como raiz, ou seja, com sudo . Mas só faça isso, você está muito consciente do que está fazendo.

Se for possível fazer todas as atualizações do svn como um usuário normal, seria uma maneira muito melhor. Nesse caso, simplesmente remova o sudo e só execute o comando svn update como um cronjob. Além disso, você também terá que executar o cronjob como um usuário normal. Consulte esta resposta aqui para saber como executar o cronjobs como um usuário normal:

link

No seu caso, você provavelmente desejaria algo assim em /etc/crontab :

 00 */3   * * *   yourusername   cd /some/path/ && svn update

Substitua yourusername pelo nome de usuário do usuário que gerou o par de chaves SSH e copie a chave pública para [email protected] e /some/path/ com o caminho para sua cópia local do svn repo que você deseja conferir. / p>     

por Malte Skoruppa 16.12.2013 / 12:31
1

Qualquer comando executado com sudo (sem mais argumentos) será executado como root. root não tem acesso às suas chaves SSH, portanto, sua configuração de login sem senha falha.

Se a sua configuração funcionar quando você a executar com seu próprio usuário, a correção será fácil. Para executar as atualizações do svn em um cronjob, mas com o seu usuário, tente usar a opção -u .

sudo -u yourusername svn update
    
por drc 16.12.2013 / 12:16
0

Isto é bastante simples ...

sudo svn update

WHHHYY? !!? !!

Não tenho certeza se preciso dizer mais alguma coisa, mas apenas para aumentar a resposta em massa um pouco mais ... Executar como sudo significa que você está executando como root. O que significa que sua configuração local de ~/.ssh/ conta para zip.

Isso também significa que todos os arquivos criados são de propriedade de root. Não editável pelo seu usuário. E é por isso que (repita isso em voz alta) nós nunca usamos sudo com subversão . Não é necessário e é prejudicial.

Para corrigir isso, sugiro eliminar sua cópia local (contanto que você tenha um backup) e, em seguida, verificar uma nova cópia como seu usuário. E no seu crontab, apenas omita o sudo .

    
por Oli 16.12.2013 / 12:17