SSH логин без пароля не работает с rc.local

Я создал скрипт bash следующим образом и сохранил его как /usr/bin/db.sync.sh:

#!/bin/bash

rsync -ar --delete /files/database_backups slyme@192.168.1.4:/users/slyme/Documents/server_backups

Я сгенерировал необходимую пару ключей аутентификации, чтобы это работало без необходимости вводить пароль.

Когда я запускаю команду напрямую, она работает (ура!).

Я добавил следующее в `/etc/rc.local':

/usr/bin/db.sync.sh >>/files/database_backups/db-sync.log.txt 2>&1

Когда я перезагружаю машину, этот скрипт завершается неудачно, и файл журнала предполагает, что процесс запрашивает пароль, который из Конечно, это не получается, поэтому он терпит неудачу. Если я запускаю /etc/rc.local из командной строки, то, конечно же, меня спрашивают пароль, и когда я его ввожу, скрипт работает.

У кого-нибудь есть идеи, почему скрипту нужен пароль при запуске из rc.local, даже если он не требует пароля при запуске напрямую?

2
задан 31 July 2014 в 19:29

2 ответа

Сценарий/etc/rc.local выполняется как корень. Удостоверьтесь, что у Вас есть корректный закрытый ключ для пользователя slyme@192.168.1.4, установленный в/root/.ssh/(и не только в $HOME/.ssh Вашего пользователя)

, С другой стороны, чтобы удостовериться, что корректный закрытый ключ используется, можно определить его на rsync командной строке:

rsync -e "ssh -i /path/to/ssh_key" ...

Hope это помогает.

3
ответ дан 31 July 2014 в 19:29

Если Вы хотите использовать /etc/rc.local, необходимо выполнить сценарий как, пользователь:

su -l myuser -c /path/to/the/script

Иначе, можно использовать @startup опция cron система; этим путем задание безопасно выполняется как Ваш пользователь, и Вы не должны редактировать системные файлы. Посмотрите, например https://unix.stackexchange.com/questions/57852/crontab-job-start-1-min-after-reboot

3
ответ дан 31 July 2014 в 19:29

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

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