Я хочу настроить задание RSync, которое будет подключаться через SSH .
У меня есть компьютер (backup @ myhost) и удаленный хост (test @ remhost), и мне нужно сделать резервную копию папки ~ / something со всем ее содержимым. Пользовательский тест ssh имеет доступ только на ЧТЕНИЕ ко всем файлам и папкам в папке ~ /. Я хочу использовать 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, вам потребуются права суперпользователя на сервере, чтобы отредактировать файл sshd_config
и добавить PubkeyAuthentication yes
.
РЕДАКТИРОВАТЬ: Это то, что наконец сработало для меня:
sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
Обратите внимание, что этот метод не считается безопасным, поскольку он отправляет пароль в виде простого текста и уязвим для атак типа «злоумышленник в середине». Рекомендуется использовать аутентификацию ключа для большей безопасности.
Я не могу представить ситуацию, когда аутентификация с открытым ключом без ключевой фразы не была бы лучшим решением для автоматического входа в систему через ssh / rsync.
В любом случае expect
должен быть способом достижения того, что вы хотите сделать. Вы не можете передать пароль по ssh, но это нечто очень похожее. Как это сделать, ответ здесь здесь, в стеке потока .
возможно, попробуйте sshpass .
кажется достаточно простым в использовании ... он также доступен через apt.
Я искал что-то подобное до того, как скопировал свои ключи, но, поскольку у меня есть ключ везде, где он мне нужен, в любом случае, я не нашел времени, чтобы попробовать это.
Обратите внимание на заявление об отказе от ответственности в этом учебнике, касающееся видимости вашего пароля.
Для всех, кому нужно это сделать:
sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
Первое, что нужно сделать, это сделать ssh без passowrd/bypass
пароля для входа, как вы можете видеть, мы можем использовать ssh-copy-id -i ./ssh/id_rsa.pub
для целевого компьютера.
После этого теста машина может быть удаленно с помощью ssh без пароля, затем rsync на следующем пути, конечно, с локальной машины на target/server
машину
Я обнаружил, что sshpass работает, но так как терманал говорит SSHPASS read: Enter passphrase for key '/home/ubuntu/.ssh/id_rsa':
, вам нужно запустить его примерно так:
sshpass -P passphrase -p 'password' rsync /path/to hostname:/destination/path -av --progress -e ssh
Где -P
указывает, какое приглашение искать, я выяснил это с помощью запустив sshpass -v
и выяснив, что он ищет фразу password
, которой там нет.
Вариант вашего решения, который более безопасен для угроз безопасности, состоит в том, чтобы сохранить ваш пароль в файле с ограниченными разрешениями и использовать флаг -f
с shpass
:
sshpass -f '/home/me/.password' rsync --progress -avz -e ssh
test@remhost:~/something/ ~/bak/
. что список запущенных процессов не будет показывать ваш пароль в командной строке, теперь он будет показывать только путь к файлу, в котором находится ваш пароль.