Як я можу встановити rsync між двома хостами, не надаючи пароля?
Як я можу встановити rsync між двома хостами, не надаючи пароля?
Відповіді:
Нижче наводиться стаття з Geek Stuff :
1. Тест rsync на ssh (з паролем):
Зробіть rsync, щоб переконатися, що він запитує пароль для вашого облікового запису на віддаленому сервері та успішно копіює файли на віддалений сервер.
Наступний приклад синхронізує локальну папку
/home/test
з віддаленою папкою/backup/test
(на192.168.200.10
сервері).Тут слід запитати пароль вашого облікового запису на віддаленому сервері.
rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
2. ssh-keygen генерує ключі.
Тепер налаштуйте
ssh
так, щоб він не запитував пароль під час виконання ssh. Використовуйтеssh-keygen
на локальному сервері для генерації відкритих та приватних ключів.$ ssh-keygen
Введіть пароль (порожній для без парольної фрази):
Знову введіть ту ж парольну фразу: Примітка. Коли вона просить вас ввести парольну фразу, просто натисніть клавішу Enter, і не вводите тут жодного пароля.
3. ssh-copy-id копіює відкритий ключ на віддалений хост
Використовуйте
ssh-copy-id
, щоб скопіювати відкритий ключ на віддалений хост.ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.200.10
Примітка. Вищезгадане запитає пароль для облікового запису користувача на віддаленому хості та автоматично скопіює відкритий ключ у відповідне місце. Якщо ssh-copy-id для вас не працює, використовуйте метод, про який ми говорили раніше, для встановлення пароля ssh без уходу.
4. Виконайте rsync над ssh без пароля
Тепер вам слід мати змогу перейти на віддалений хост без введення пароля.
ssh user@192.168.200.10
Виконайте rsync ще раз, він не повинен просити вас вводити паролі цього разу.
rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
Генеруйте відкритий ключ у ServerA
$ ssh-keygen
$ Enter passphrase (empty for no passphrase):
$ Enter same passphrase again:
Відкритий ключ буде згенеровано та збережено в
~/.ssh/id_rsa.pub
Скопіюйте відкритий ключ на віддалений хост
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.100
Або
~/.ssh/authorized_keys
. Створіть файл, якщо його немає. Переконайтесь, що режим файлу 700.Усі ці пропозиції щодо rsync не вдається використовувати останню версію серпня 2017 року на Ubuntu 16.04 LTS. Не один із них працює.
Вони також розділяють дефіцит необхідності використання демон-rsync, що працює на файловому сервері.
Ця відповідь працює із загальним Linux NAS
ТУТ Є КРОКИ:
1) ВИКОРИСТИТИ rsync, як показано нижче. (до каталогу під / mnt або / медіа, який ви створили, або на пристрої, на якому ви монтуєте. Неважливо, який) 2) ПЕРЕВІНТИ файли З scp, як показано нижче. FileZilla також буде працювати.
Все це (крім FileZilla) може працювати в кроні без пароля.
Ця установка працює дуже добре. Єдиний раз, коли вам знадобиться пароль, це коли ви встановите початковий ssh-copy-id для налаштування входу без пароля RSA. Потім ви запрограмуєте його у FileZilla один раз. Після цього день у день жодних підказок пароля не трапляється. Це ЛЕГКО. І найкраща частина полягає в тому, що ви можете використовувати всі переваги програми rsync.
Ця відповідь пояснює, як користуватися rsync без пароля.
Також немає необхідності встановлювати ще один демон (rsync) в будь-якій системі.
Якщо ви ще цього не зробили, зробіть це:
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rse.pub NASserver
і перевірити це за допомогою цього:
ssh NASserver
а може, щось подібне:
scp myfile myusername@NASserver:Documents
У мене є другий жорсткий диск, тому я використовую rsync, щоб скопіювати завантажувальний диск у підкаталог на sdb1 (встановлений під / mnt та виключений з rsync).
Якщо у вас немає фізичного жорсткого диска і у вас є достатньо місця, просто створіть підкаталог під / mnt (або / медіа) та скористайтеся цим.
Поки каталог виключається, не має значення, знаходиться він на окремому диску чи ні.
Ось резервний сценарій:
cls
echo "EMPTYING TRASH"
rm ~/.local.share/Trash/*
echo "====================================================================="
echo " BEGINNING rsync from root to /mnt/full/sysbkp"
echo "====================================================================="
time sudo rsync -aAXv / --delete --ignore-errors --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/full/mysystem
ПІСЛЯ rsync використовуйте сценарій:
Я завжди створюю новий каталог на цільовому NASserver: / mnt / fullsys / mysystem, тому передаються лише відповідні файли.
ssh -e"mv /mnt/fullsys/mysystem mysystem.bak" myusername@NASserver
ssh -e"mkdir /mnt/fullsys/mysystem" myusername@NASserver
scp -r /mnt/full/mysystem myusername@NASserver:/mnt/fullsys/mysystem
Вуаля! Це займає деякий час, але потім це робиться.
Обидва сценарії можуть чудово працювати в кроні.
Альтернативою є використання FileZilla для відправки на сервер NAS вручну.
Оскільки можна видалити, я завжди
make a new directory and enter it
через FileZilla на цільовому жорсткому диску 1 ТБ, тому передаються лише відповідні файли.
Лише після завершення передачі я видаляю старішу версію.
Вуаля. Успіх.
позначте адресу користувача краще
ssh-copy-id -i ~/.ssh/id_rsa.pub <user_in_server>@192.168.1.100
rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)
тоді все excludes
та --delete
інше я ще не працював, але це найближче, що я бачив. Нібито, ви повинні це зробити, навіть якщо вже можете ssh
і scp
на цільовому сервері, і демон rsync повинен бути запущений, оскільки він не використовує звичайний формат sftp. Я все ще шукаю.