Как я могу установить 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
Введите фразу-пароль (пусто, без пароля):
Введите тот же пароль еще раз: Примечание: когда он просит вас ввести парольную фразу просто нажмите клавишу ввода, и не вводите пароль здесь.
3. ssh-copy-id копирует открытый ключ на удаленный хост
использование
ssh-copy-id
, чтобы скопировать открытый ключ на удаленный хост.ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.200.10
Примечание: выше будет спрашивать пароль для вашей учетной записи на удаленном и скопируйте открытый ключ автоматически в соответствующий место нахождения. Если ssh-copy-id не работает для вас, используйте метод, который мы обсуждалось ранее, чтобы настроить пароль SSH минус логин.
4. Выполните rsync через ssh без пароля
Теперь вы должны быть в состоянии подключиться к удаленному хосту без входа в пароль.
ssh 192.168.200.10
Выполните rsync еще раз, он не должен попросить вас ввести пароль этот раз.
rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
Генерация открытого ключа на сервере
$ 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 или / media, который вы создали или на устройстве, которое вы
крепление. не важно какой)
2) Передача файлов с помощью scp, как показано ниже. FileZilla тоже будет работать.
Все это (кроме FileZilla) может работать в cron без пароля.
Эта настройка работает очень хорошо. Единственный раз, когда вам нужен пароль, - это когда вы устанавливаете начальный 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 (или / media) и используете его.
Пока каталог исключен, не имеет значения, находится он на отдельном диске или нет.
Вот скрипт резервного копирования:
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
Вуаля! Это займет некоторое время, но потом это будет сделано.
Оба скрипта могут нормально работать в cron.
Альтернативой является использование 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. Я все еще ищу.