Назад | Перейти на главную страницу

rsync: не удается избавиться от запроса пароля

Я пытаюсь запустить rsync для копирования файлов (Centos 5.2 -> Centos 5.2), и мне нужно запустить его с помощью nohup, чтобы он мог работать после отключения сеанса ssh. Проблема в том, что я не могу заставить rsync не запрашивать пароль, и я не могу заставить nohup хорошо играть с запросом пароля.

rsync -v -r -x --password-file=/root/password.txt /sourcedir/ root@10.1.1.1:/destdir

Я пробовал как установить переменную RSYNC_PASSWORD для пароля, так и создать файл с паролем и использовать --password-file, но в обоих случаях я все еще получаю запрос с запросом пароля.

Как мне дать rsync необходимый пароль, чтобы он работал нормально?

Вы можете использовать аутентификацию с открытым / закрытым ключом.

Создайте пару открытый / закрытый ключ с помощью

ssh-keygen -t rsa

затем скопируйте dsa.pub в файл .ssh / authorized_keys в своем домашнем каталоге на хосте destiny.

Проблема в том, что RSYNC_PASSWORD, а также --password-file применимы только при подключении напрямую к серверу rsyncd, а не при запуске rsync с использованием удаленной оболочки, такой как ssh. Вы можете выбрать, в зависимости от передаваемых данных, либо установить ключи ssh без пароля, либо вместо этого начать использовать демон rsyncd.

(Обратите внимание, что если вы подключаетесь напрямую к rsyncd, ваши данные будут передаваться в незашифрованном виде.)

В качестве альтернативы вы можете использовать screen вместо nohup. Это работает так:

  • тип screen
  • вам будет представлен новый терминал
  • start ваша команда, которая будет длиться вечно, в вашем случае команда rsync.
  • отключиться от экранного терминала с помощью ctrl-a, а затем d
  • вы можете выйти сейчас или заняться другими делами, ваш экранный терминал будет продолжать делать ваши дела
  • вы можете повторно подключиться к экрану, набрав screen -r, это работает с другого tty или ssh-соединения или чего-то еще.

Rsync будет продолжать запрашивать пароль, пока это делается через ssh-сервер, и наилучшим вариантом будет добавить аутентификацию с открытым ключом для ssh. Итак, для начала:

на исходном сервере -

$ ssh-keygen
$ Enter passphrase (empty for no passphrase):
$ Enter same passphrase again:

Теперь скопируйте открытый ключ ssh в

~/.ssh/id_rsa.pub

на удаленный хост по адресу:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

или в качестве альтернативы вы можете установить ssh-pass и запустить:

SSHPASS='myPassword'
/usr/bin/rsync -a -r -p -o -g --progress -s -u --rsh="/usr/bin/sshpass -p $SSHPASS ssh -o StrictHostKeyChecking=no -l root"  /sourcedir/ root@10.1.1.1:/destdir  >&2