Paswordless Rsync через SSH без аутентификации ключа

Я хочу настроить работу RSync, которая будет подключаться через SSH.

У меня есть компьютер (backup @ myhost) и удаленный хост (test @ remhost), и мне нужно создать резервную копию папки ~ / something со всем содержимым. Тест пользователя ssh имеет только доступ READ ко всем файлам и папкам в папке ~ /. Я хочу использовать rsync для копирования папки test @ remhost: ~ / something в папку backup @ myhost: ~ / bak.

Для этой цели я использую следующую команду через BASH на Ubuntu 11.10 (Oneiric):

rsync -avz -e ssh test@remhost:~/something/ ~/bak/ 

После входа в игру я получаю следующее:

 test@remhost's password: 

Я набираю пароль и работает rsync.

Я хочу, чтобы приведенная выше команда автоматически вводила пароль и передавала его в качестве параметра или автоматически вводила его и запускала задание.

Я попробовал выполнить rsync -avz -e ssh test:password@remhost:~/something/ ~/bak/ но он все еще запрашивает пароль, и это раздражает.

Я не хочу слышать о каких-либо ключах (RSA, DSA или любой другой). Я просто хочу простую команду, которая войдет в систему и выполнит эту работу.

EDIT: Возможный сценарий может быть, если аутентификация с открытым ключом отключена, и вы не можете изменить это. Например, если вы используете OpenSSH, вам понадобятся права root на сервере, чтобы отредактировать файл sshd_config и добавить PubkeyAuthentication yes .

EDIT: Это то, что окончательно сработало для меня:

 sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/ 

Обратите внимание, что этот метод не считается безопасным, поскольку он отправляет пароль в виде обычного текста и уязвим для атак типа «человек в середине». Рекомендуется использовать аутентификацию ключа для повышения безопасности.

возможно, попробуйте sshpass .

кажется достаточно простым, чтобы использовать … он доступен также с помощью apt.

Я искал что-то вроде этого, прежде чем я скопировал свои ключи, но так как у меня есть ключ во всем, что мне нужно, все равно, я не нашел времени, чтобы попробовать это.

Однако обратите внимание на отказ от этого руководства в отношении видимости вашего пароля.


Для всех, кто должен это сделать:

 sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/ 

Вариант вашего решения, более безопасный для угроз безопасности, – это сохранить ваш пароль в файле с жесткими разрешениями и использовать флаг -f с помощью shpass :

 sshpass -f '/home/me/.password' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/ 

Разница в том, что перечисление запущенных процессов не покажет ваш пароль в командной строке, теперь будет отображаться только путь к файлу, в котором находится ваш пароль.

Я не могу представить никакой ситуации, когда аутентификация с открытым ключом без кодовой фразы не будет лучшим решением для авторизированных логинов ssh / rsync.

В любом случае, expect должно быть способом достижения того, что вы хотите сделать. Вы не можете передать пароль в ssh, но это что-то очень похожее. Как это сделать, здесь можно ответить в stackoverflow .