Я бы хотел запустить следующее: (Centos 5.4)
rsync -avz /source_folder 192.168.1.1:/destination_folder
прямо сейчас я запускаю его из CLI, но в конечном итоге я хотел бы запустить его из crontab (пользователь: root).
когда я его запускаю, он всегда просит ввести пароль root. Я хочу пропустить пароль. Я видел несколько ответов по этому поводу, но это либо не работает, либо я не уверен, что полностью понимаю, как это сделать. может кто-нибудь помочь?
Как уже говорили другие, вы можете сделать это с помощью ключей ssh без парольной фразы. Это по своей сути небезопасно, и вам нужно предпринять дополнительные шаги, чтобы снова добавить безопасность в процесс. Что я делаю, так это ограничиваю использование ключа хост и команда. Я написал это из своих заметок, не думаю, что пропустил какие-то шаги.
Первое, что нужно сделать, - это сгенерировать пару открытых ключей, которые будут использоваться исключительно для этого процесса резервного копирования. Когда будет предложено ввести парольную фразу, просто дважды нажмите Enter.
ssh-keygen -t rsa -b 2048 -C "For Backup use only"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/root/.ssh/id_rsa): /root/.ssh/backup.id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/backup.id_rsa.
Your public key has been saved in /root/.ssh/backup.id_rsa.pub.
The key fingerprint is:65:c0:cb:2b:9e:18:ff:b2:59:d4:b5:e8:ae:84:32:2b
Перенести открытый ключ /root/.ssh/backup.id_rsa.pub
на удаленный хост и добавьте его в /root/.ssh/authorized_keys
файл.
На удаленном хосте ограничьте использование открытого ключа, добавив from=
и command=
ограничения. Отредактируйте /root/.ssh/authorized_keys
найдите резервный ключ и добавьте адрес / имя хоста, на котором будет выполняться задание cron, а также команду для запуска. Эта команда будет запущена, когда что-то войдет в систему с этим ключом, например.
from="192.168.254.207",command="/root/checkrsync",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3N...
Вы можете использовать этот ключ только из 192.168.254.207, и вы можете запускать только команду / root / checkrsync, и другие функции также были удалены.
Отредактируйте файл / root / checkrsync следующим образом
echo $SSH_ORIGINAL_COMMAND >/tmp/rsync.cmd
сохраните его и сделайте исполняемым
chmod 700 /root/checkrsync
Мы изменим /root/checkrsync
позже, когда мы узнаем, что такое $ SSH_ORIGINAL_COMMAND.
На хосте, где мы будем запускать задание cron, интерактивно запустите команду rsync
/usr/bin/rsync -avz -e "/usr/bin/ssh -i /root/.ssh/backup.id_rsa" /source_folder root@remote.host:/destination_folder
Не беспокойтесь о каких-либо сообщениях об ошибках, мы хотим только сгенерировать файл /tmp/rsync.cmd на удаленном хосте.
На удаленном хосте точно запишите содержимое файла /tmp/rsync.cmd (это будет что-то вроде rsync --server -vlogDtprze.iLs . /destination_folder
).
На удаленном хосте править /root/checkrsync
и измените его на
if [[ "$SSH_ORIGINAL_COMMAND" == "rsync --server -vlogDtprze.iLs . /destination_folder" ]]
then
$SSH_ORIGINAL_COMMAND
fi
где правая часть оператора if - это то, что было в /tmp/rsync.cmd.
Протестируйте настройку. На хосте, где мы будем запускать задание cron, снова запустите команду rsync в интерактивном режиме.
/usr/bin/rsync -avz -e "/usr/bin/ssh -i /root/.ssh/backup.id_rsa" /source_folder root@remote.host:/destination_folder
Теперь он должен работать правильно, если он работает, а затем установить его в ваш crontab.
crontab -e
* 1 * * * /usr/bin/rsync -avz -e "/usr/bin/ssh -i /root/.ssh/backup.id_rsa" /source_folder root@remote.host:/destination_folder
Вам необходимо настроить без парольной фразы ssh-ключ аутентификации.
При настройке помните о безопасности. Я рекомендую использовать список доступа к хосту для ограничения IP-адреса источника с помощью ключа.
Проверьте следующую ссылку для настройки ключей SSH. Ключи SSh помогут вам установить пароль без входа по ssh.
http://techtrunch.com/linux/ssh-keys
Настройка CRON:
Откройте терминал и введите crontab -e
, затем введите следующий
1 * * * * rsync -avz / исходная_папка 192.168.1.1:/ конечная_папка
Заметка
Это будет выполняться каждый час.
Для ssh без пароля (или rsync поверх ssh) вам понадобится пара ключей без парольной фразы.
Вы можете сгенерировать свою пару (закрытый и открытый ключ) на своем источник машина ssh-keygen -t rsa
(чтобы ~/.ssh/id_rsa
), затем добавьте свой открытый ключ (содержимое ~/.ssh/id_rsa.pub
) к место назначения машина для ~/.ssh/authorized_keys
.
Прочтите всю статью о резервном копировании cron rsync: https://medium.com/@deltazero/linux-remote-backup-rsync-chroot-d797ba6babe5