Как автоматически передать пароль для команды rsync SSH? - PullRequest
94 голосов
/ 21 июля 2010

Мне нужно сделать rsync с помощью ssh и я хочу сделать это автоматически, без необходимости передачи пароля для ssh вручную.

Ответы [ 13 ]

2 голосов
/ 23 ноября 2016

Я использую файл VBScript для этого на платформе Windows, он очень хорошо меня обслуживает.

set shell = CreateObject("WScript.Shell")
shell.run"rsync -a Name@192.168.1.100:/Users/Name/Projects/test ."
WScript.Sleep 100
shell.SendKeys"Your_Password"
shell.SendKeys "{ENTER}"
1 голос
/ 10 апреля 2019

Официальное решение (и другие) были неполными, когда я впервые посетил, поэтому я вернулся через несколько лет, чтобы опубликовать этот альтернативный подход на тот случай, если кто-то из других намеревался использовать пару открытый / закрытый ключ:

Выполните это с целевой машины резервного копирования, которая извлекает данные из источника в целевую резервную копию

rsync -av --delete -e 'ssh -p 59333 -i /home/user/.ssh/id_rsa' user@10.9.9.3:/home/user/Server/ /home/keith/Server/

Выполните это с компьютера-источника, который отправляет из источника в целевую резервную копию

rsync -av --delete -e 'ssh -p 59333 -i /home/user/.ssh/id_rsa' /home/user/Server/ user@10.9.9.3:/home/user/Server/

И, если вы не используете альтернативный порт для ssh, рассмотрите более элегантные примеры ниже:

Выполните это с целевой машины резервного копирования, которая извлекает данные из источника в целевую резервную копию:

sudo rsync -avi --delete user@10.9.9.3:/var/www/ /media/sdb1/backups/www/

Выполните это с компьютера-источника, который отправляет из источника в целевую резервную копию:

sudo rsync -avi --delete /media/sdb1/backups/www/ user@10.9.9.3:/var/www/

Если вы все еще получаете запрос на ввод пароля, то вам нужно проверить конфигурацию ssh в /etc/ssh/sshd_config и убедиться, что у каждого пользователя в исходном и целевом виде есть соответствующий открытый ключ ssh других, отправив каждому из них ssh-copy-id user@10.9.9.3.

(Опять же, это для использования пар ключей ssh ​​без пароля, в качестве альтернативного подхода, и не для передачи пароля через файл.)

0 голосов
/ 04 июня 2016

Следуя идее Эндрю Сифорда, это делается с помощью sshfs:

echo "SuperHardToGuessPass:P" | sshfs -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@example.com:/mypath/ /mnt/source-tmp/ -o workaround=rename -o password_stdin
rsync -a /mnt/source-tmp/ /media/destination/
umount /mnt/source-tmp
...