1

У меня проблемы с передачей файлов с помощью rsync через ssh. Если я просто бегу

rsync -avz devel@10.10.10.83:/home/devel/ $/home/user/rsync/servidor

он работает, как и ожидалось, так как открытый ключ хранится на удаленном компьютере, но если я запускаю эту же строку в crontab,

* * * * * rsync -avz devel@10.10.10.83:/home/devel/ $HOME/rsync/servidor

синхронизация не удалась.

После просмотра Интернета я обнаружил, что crontab не может видеть закрытый ключ, так как он работает с некоторыми ограничениями, поэтому я изменил crontab следующим образом

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

где находится 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" devel@10.10.10.83:/home/devel/ /home/user/rsync/servidor

Идея состоит в том, что теперь rsync явно использует закрытый ключ ssh для подключения к удаленной машине, но у меня все еще есть проблемы с этим подходом. Журнал:

Cronjob started for back-up files Qua Fev 4 13:39:02 BRST 2015
#/usr/bin/rsync -vv devel@10.10.10.83:/home/devel /home/user/rsync/servidor
#rsync -avz -e “ssh -i /home/user/.ssh/id_rsa” devel@10.10.10.83:/home/devel     /home/user/rsync/servidor
/usr/bin/rsync -avz -e "/usr/bin/ssh -i $HOME/.ssh/id_rsa" devel@10.10.10.83:/home/devel/ $HOME/rsync/servidor
+ /usr/bin/rsync -avz -e /usr/bin/ssh -i /home/user/.ssh/id_rsa devel@10.10.10.83:/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]

Тем не менее, линия

/usr/bin/rsync -avz -e "/usr/bin/ssh -i $/home/user/.ssh/id_rsa" devel@10.10.10.83:/home/devel/ /home/user/rsync/servidor

работает нормально из терминала.

ОС: Linux Mint Quaina

Любая помощь будет оценена

РЕДАКТИРОВАТЬ: я использовал пароль при создании ключа SSH. Разрешения:

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

1 ответ1

0

РЕДАКТИРОВАТЬ 2: Я решил проблему, используя ключ без парафразера и ограничив его rsync. Я реализую его, следуя этому очень хорошо объясненному учебнику: http://www.guyrutenberg.com/2014/01/14/restricting-ssh-access-to-rsync/

Основные шаги

Удаленный сервер

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

ЛОКАЛЬНЫЙ компьютер

ssh-keygen -f ~/.ssh/id_remote_backup -C "Automated remote backup"      #NO passphrase
scp ~/.ssh/id_remote_backup.pub devel@10.10.10.83:/home/devel/.ssh

УДАЛЕННЫЙ компьютер

cat id_remote_backup.pub >> authorized_keys

МЕСТНЫЙ

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

ЛОКАЛЬНЫЙ файл: /home/user/sync/sync.sh:

#!/bin/sh
echo ""
echo ""
echo "CRON:" `date`
set -xv
rsync -e "ssh -i $HOME/.ssh/id_remote_backup" -avzP devel@10.10.10.83:/ /home/user/servidor 


chmod u+x /home/user/sync/sync.sh

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .