não pode rsync via ssh de crontab

1

Estou com problemas ao transferir arquivos com o rsync via ssh. Se eu apenas correr

rsync -avz [email protected]:/home/devel/ $/home/user/rsync/servidor

funciona como esperado, pois a chave pública é armazenada no computador remoto, mas se eu executar essa mesma linha no crontab,

* * * * * rsync -avz [email protected]:/home/devel/ $HOME/rsync/servidor

a sincronização falha.

Depois de navegar na web, descobri que o crontab não é capaz de ver a chave privada, uma vez que é executado com algumas restrições, então alterei o crontab para o seguinte

* * * * * cd /home/user/rsync;/bin/sh transfer.sh >> /home/user/rsync/log/cron.log 2>&1

onde o transfer.sh é

#!/bin/sh
#BASH_ENV=/home/user/.bashrc
echo ""
echo "Cronjob started for back-up files" 'date'
set -xv
/usr/bin/rsync -avz -e "/usr/bin/ssh -i $/home/user/.ssh/id_rsa" [email protected]:/home/devel/ /home/user/rsync/servidor

A idéia é que agora o rsync use explicitamente a chave privada ssh para conectar-se à máquina remota, mas ainda assim tenho problemas com essa abordagem. O log:

Cronjob started for back-up files Qua Fev 4 13:39:02 BRST 2015
#/usr/bin/rsync -vv [email protected]:/home/devel /home/user/rsync/servidor
#rsync -avz -e “ssh -i /home/user/.ssh/id_rsa” [email protected]:/home/devel     /home/user/rsync/servidor
/usr/bin/rsync -avz -e "/usr/bin/ssh -i $HOME/.ssh/id_rsa" [email protected]:/home/devel/ $HOME/rsync/servidor
+ /usr/bin/rsync -avz -e /usr/bin/ssh -i /home/user/.ssh/id_rsa [email protected]:/home/devel/ /home/user/rsync/servidor
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.0]

No entanto, a linha

/usr/bin/rsync -avz -e "/usr/bin/ssh -i $/home/user/.ssh/id_rsa" [email protected]:/home/devel/ /home/user/rsync/servidor

funciona bem no terminal.

SO: Linux mint Quaina

Qualquer ajuda seria apreciada

EDITAR: Eu usei uma senha quando criei a chave SSH. As permissões são:

ls -l /home/user/.ssh/id_rsa
-rw------- 1 user user 1766 Dez 16 15:40 /home/user/.ssh/id_rsa
    
por user3889486 04.02.2015 / 16:43

1 resposta

0

EDIT2: Eu resolvi o problema usando uma chave sem paráfrase e restringindo-a ao rsync. Eu implemento seguindo este tutorial bem explicado: link

Principais etapas

Servidor REMOTO

mkdir ~/bin
gunzip /usr/share/doc/rsync/scripts/rrsync.gz -c > ~/bin/rrsync
chmod +x ~/bin/rrsync

Computador LOCAL

ssh-keygen -f ~/.ssh/id_remote_backup -C "Automated remote backup"      #NO passphrase
scp ~/.ssh/id_remote_backup.pub [email protected]:/home/devel/.ssh

Computador REMOTO

cat id_remote_backup.pub >> authorized_keys

LOCAL

#rsync -e "ssh -i $HOME/.ssh/id_remote_backup" -av [email protected]:/home/devel/ /home/user/servidor
* */2 * * * cd /home/user/sync;/bin/sh sync.sh >> /home/user/servidor/cron.log 2>&1

Arquivo LOCAL: /home/user/sync/sync.sh:

#!/bin/sh
echo ""
echo ""
echo "CRON:" 'date'
set -xv
rsync -e "ssh -i $HOME/.ssh/id_remote_backup" -avzP [email protected]:/ /home/user/servidor 


chmod u+x /home/user/sync/sync.sh
    
por 06.02.2015 / 21:40