Я хочу настроить работу RSync, которая будет подключаться через SSH.
У меня есть компьютер (backup @ myhost) и удаленный хост (test @ remhost), и мне нужно сделать резервную копию папки ~ / что-то со всем ее содержимым. Пользовательский тест ssh имеет доступ только для чтения ко всем файлам и папкам в папке ~ /. Я хочу использовать rsync для копирования папки test @ remhost: ~ / что-то в папку 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/
Обратите внимание, что этот метод не считается безопасным, так как он отправляет пароль в виде обычного текста и уязвим для атак «человек посередине». Рекомендуется использовать ключ аутентификации для большей безопасности.
Ответы:
возможно попробуй sshpass .
кажется достаточно простым в использовании ... он также доступен через apt.
Я искал что-то подобное до того, как скопировал свои ключи, но, поскольку у меня есть ключ везде, где он мне нужен, в любом случае, я не нашел времени, чтобы попробовать это.
Тем не менее, обратите внимание на отказ от ответственности в этом руководстве, касающийся видимости вашего пароля.
Для всех, кому нужно это сделать:
источник
Вариант вашего решения, который более безопасен для угроз безопасности, состоит в том, чтобы хранить ваш пароль в файле с жесткими разрешениями и использовать
-f
флаг сshpass
:Разница в том, что в списке запущенных процессов ваш пароль не будет отображаться в командной строке, теперь будет отображаться только путь к файлу, в котором находится ваш пароль.
источник
Я не могу представить ситуацию, когда аутентификация с открытым ключом без ключевой фразы не была бы лучшим решением для автоматического входа в систему через ssh / rsync.
В любом случае
expect
должен быть способ достичь того, что вы хотите сделать. Вы не можете передать пароль по ssh, но это нечто очень похожее. Как это сделать, ответ здесь в stackoverflow .источник
Я обнаружил, что sshpass работает, но так как termanal говорит, что
SSHPASS read: Enter passphrase for key '/home/ubuntu/.ssh/id_rsa':
вам нужно запустить его примерно так:Где
-P
указывает, какое приглашение искать, я выяснил это, запустивsshpass -v
и выяснив, что он ищет фразу,password
которой там нет.источник
Первое, что нужно сделать, это сделать ssh без ввода
passowrd/bypass
пароля, как вы можете видеть, мы можем использоватьssh-copy-id -i ./ssh/id_rsa.pub
для целевой машины.После этого теста машина может быть удаленно с помощью SSH без пароля, а затем rsync на пути, конечно, с локальной машины на
target/server
машинуисточник