Я пытаюсь запустить 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
ctrl-a
, а затем dscreen -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