9

Как я могу установить rsync между двумя хостами без ввода пароля?

4 ответа4

17

Ниже статья из The 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/
1

Генерировать открытый ключ в 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

Или же

  • Откройте id_rsa.pub, скопируйте содержимое
  • Войдите в систему ServerB, используя того же пользователя в команде rsync
  • В ServerB добавьте содержимое к ~/.ssh/authorized_keys . Создайте файл, если он не существует. Убедитесь, что режим файла 700.
0

Все эти предложения по rsync не работают с последней версией в августе 2017 года на Ubuntu 16.04 LTS. Ни один из них не работает.

Кроме того, все они разделяют недостаток необходимости запуска демона rsync на файловом сервере.

Этот ответ работает с универсальным сетевым хранилищем Linux

ЗДЕСЬ ШАГИ:
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 ТБ, поэтому передаются только соответствующие файлы.

Только после завершения передачи я удаляю старую версию.

Вуаля. Успех.

-1

лучше пометить пользователя по адресу

ssh-copy-id -i ~/.ssh/id_rsa.pub <user_in_server>@192.168.1.100

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .