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

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

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

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

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

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

После нажатия Enter я получаю это:

test@remhost's password:

Я ввожу пароль и rsync работает.

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

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

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

РЕДАКТИРОВАТЬ:Возможный сценарий может быть, если аутентификация с открытым ключом отключена и вы не можете это изменить. Например, если вы используете OpenSSH, вам понадобятся права root на сервере, чтобы редактировать файл sshd_configи добавлять PubkeyAuthentication yes.

РЕДАКТИРОВАТЬ:Вот что в итоге мне помогло:

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

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

решение1

может быть, попробовать sshpass.

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

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

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


Для всех, кому это необходимо:

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

решение2

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

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

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

решение3

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

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

решение4

Это также работает:

system <<~ "RSYNC";
    rsync \\
      --rsh="sshpass -p '$password' ssh -p 22" \\
      --archive \\
      --verbose \\
      --progress \\
      --partial \\
      --human-readable \\
      "$directory" \\
      "$options{host}:${directory}"
RSYNC

т.е. проход sshpassвнутрь --rshвместо того, чтобы быть впередиrsync

Этот метод вместе с использованием SSHPASSпеременной окружения описан в разделе «Примеры» руководства:

https://www.freebsd.org/cgi/man.cgi?query=sshpass&sektion=1

Связанный контент