Как использовать rsync через ssh в cron?

У меня есть виртуальный виртуальный сервер, к которому я пытаюсь создать резервную копию некоторых каталогов из локального каталога /home.

Я подготовил этот скрипт:

#!/bin/bash /usr/bin/rsync -rvvv /home/arkadiusz/scripts root@XXX.XXX.26.106:/home/backup/ /usr/bin/notify-send "Backup complete" "~/scripts -> vps" -i cryptkeeper

В crontab пользователя я добавил запись:

*/1 * * * * /home/arkadiusz/scripts/vps.sh > /home/arkadiusz/cron-vps.log 2> /home/arkadiusz/cron-vps.error.log

После выполнения сценария оболочки мой каталог scripts не отображается в /home/backup/ на удаленном сервере. В файле cron-vps.log я вижу только это:

opening connection using: ssh -l root XXX.XXX.26.106 rsync --server -vvvre.iLsfx . /home/backup/ (9 args) [sender] _exit_cleanup(code=12, file=io.c, line=226): about to call exit(255)

В файле cron-vps.error.log оказывается, что это проблема авторизации:

Permission denied, please try again. Permission denied, please try again. Permission denied (publickey,password). rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.1]

] Я дополнительно проверил статус sshd на моем удаленном сервере:

root@vpsXXXXXX:/home/backup# service sshd status ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2017-04-12 01:04:09 CEST; 12h ago Main PID: 281 (sshd) CGroup: /system.slice/ssh.service └─281 /usr/sbin/sshd -D ... Apr 12 13:41:01 vpsXXXXXX.ovh.net sshd[5019]: Failed password for root from XXX.XXX.232.122 port 21782 ssh2 Apr 12 13:41:01 vpsXXXXXX.ovh.net sshd[5019]: Failed password for root from XXX.XXX.232.122 port 21782 ssh2 Apr 12 13:41:01 vpsXXXXXX.ovh.net sshd[5019]: Connection closed by XXX.XXX.232.122 port 21782 [preauth]

На основании этих журналов, похоже, проблема с авторизацией, но мое соединение SSH работает, когда я пытаюсь войти в систему к моему удаленному разъему с помощью этой команды:

ssh root@XXX.XXX.26.106

Кроме того, команда rsync работает в терминале без каких-либо паролей:

/usr/bin/rsync -rvvv /home/arkadiusz/scripts root@XXX.XXX.26.106:/home/backup/

Что я делаю неправильно?

4
задан 12 April 2017 в 15:04

5 ответов

В файле cron-vps.error.log оказывается, что это проблема авторизации:

Аутентификация и авторизация - это другая проблема. Это аутентификация, которая терпит неудачу (в этом случае пароль, как видно из журналов).

Скорее всего, вы настроили свой секретный ключ для шифрования, но вы не заметили его обычных сеансов, потому что вы его сохранили в ssh-agent. Он отлично работает в вашей сессии, но это не будет работать в сеансе, инициированном с вашего crontab.

3
ответ дан 22 May 2018 в 23:43
  • 1
    Что я могу сделать, чтобы заставить его работать? Если я правильно понимаю, это проблема с моим личным ключом. Это зависит от доступа к файлу с разрешениями, и cron не имеет к этому доступа? – Arkadiusz Wieczorek 12 April 2017 в 16:04
  • 2
    Убедитесь, что ваш ключ имеет парольную фразу / зашифрован. Если это так, удалите парольную фразу или создайте отдельный ключ в другом месте, используемом для вашего rsync, и убедитесь, что вы можете подключиться к нему (используйте переключатели -oIdentityFile=/path/to/key -oIdentitiesOnly=yes). – Jakuje 12 April 2017 в 16:08
  • 3
    Спасибо @Jakuje и @Ravi Я использовал ключ без кодовой фразы и отлично работает под cron: /usr/bin/rsync -rvvv -e "ssh -i $HOME/.ssh/backup-key" /home/arkadiusz/scripts root@XXX.XXX.26.106:/home/backup/ – Arkadiusz Wieczorek 12 April 2017 в 16:42
В файле cron-vps.error.log оказывается, что это проблема авторизации:

Аутентификация и авторизация - это другая проблема. Это аутентификация, которая терпит неудачу (в этом случае пароль, как видно из журналов).

Скорее всего, вы настроили свой секретный ключ для шифрования, но вы не заметили его обычных сеансов, потому что вы его сохранили в ssh-agent. Он отлично работает в вашей сессии, но это не будет работать в сеансе, инициированном с вашего crontab.

3
ответ дан 18 July 2018 в 15:07
В файле cron-vps.error.log оказывается, что это проблема авторизации:

Аутентификация и авторизация - это другая проблема. Это аутентификация, которая терпит неудачу (в этом случае пароль, как видно из журналов).

Скорее всего, вы настроили свой секретный ключ для шифрования, но вы не заметили его обычных сеансов, потому что вы его сохранили в ssh-agent. Он отлично работает в вашей сессии, но это не будет работать в сеансе, инициированном с вашего crontab.

3
ответ дан 24 July 2018 в 20:33
В файле cron-vps.error.log оказывается, что это проблема авторизации:

Аутентификация и авторизация - это другая проблема. Это аутентификация, которая терпит неудачу (в этом случае пароль, как видно из журналов).

Скорее всего, вы настроили свой секретный ключ для шифрования, но вы не заметили его обычных сеансов, потому что вы его сохранили в ssh-agent. Он отлично работает в вашей сессии, но это не будет работать в сеансе, инициированном с вашего crontab.

3
ответ дан 31 July 2018 в 12:56
В файле cron-vps.error.log оказывается, что это проблема авторизации:

Аутентификация и авторизация - это другая проблема. Это аутентификация, которая терпит неудачу (в этом случае пароль, как видно из журналов).

Скорее всего, вы настроили свой секретный ключ для шифрования, но вы не заметили его обычных сеансов, потому что вы его сохранили в ssh-agent. Он отлично работает в вашей сессии, но это не будет работать в сеансе, инициированном с вашего crontab.

3
ответ дан 31 July 2018 в 23:35

Другие вопросы по тегам:

Похожие вопросы: