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

12

Я хочу настроить работу 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/

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

Сорин-Михай Опря
источник
3
Вы не получите никаких ответов, если скажете людям не давать вам ответ.
Майк Скотт
7
Это бессмысленно. В чем проблема с аутентификацией ключа? Если настроена аутентификация на основе ключей, то с этого момента у вас есть только простая команда, которая выполняет работу автоматически, именно то, что вам нужно. Так что я не вижу, в чем проблема с этим. Хранение пароля где-то, чтобы указать его «автоматически» - одна из самых больших дыр в безопасности, которую я могу себе представить, какой смысл это делать?
ЛГБ
Мне не нужно, чтобы кто-то давал мне лекции по безопасности. Я уже знаю последствия. Мне просто нужно оставить все на сервере как есть и ничего не менять. Для вашей информации я уже пробовал это с ключами, и он все еще спрашивает у меня пароль, поэтому ваш аргумент неверен!
Сорин-Михай Опря
1
Нет, по понятным причинам такого параметра по умолчанию нет. Посмотрите на ответ Мигса, если вам нужен такой параметр.
lumbric
2
@ Сорин Михай Опря: Ну, если у вас это не работает, это плохо? Интересный. Для справки: в качестве интернет-инженера, работающего с провайдером, мы используем аутентификацию на основе ключей с помощью ssh на более чем 100 серверах. У нас это работает, интересно. Не называйте что-то плохое только потому, что не понимаете, как это работает и как это нужно настроить. Если вы правы, это не сработает ни для кого, что привлечет внимание как серьезная ошибка реализации ssh-сервера :) Так что мой agrument не является недействительным, просто вы не можете настроить его по некоторым причинам. Это не то же самое, извините.
ЛГБ

Ответы:

30

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

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

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

Тем не менее, обратите внимание на отказ от ответственности в этом руководстве, касающийся видимости вашего пароля.


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

sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
Migs
источник
Добро пожаловать. Хотя я согласен с остальными здесь, что аутентификация с открытым ключом является лучшим решением в этом вопросе, иногда требуются альтернативные методы, при условии, что мы знаем о компромиссах при использовании альтернатив.
Migs
Действительно ... но вот почему это называется открытым исходным кодом, верно? Многочисленные вкусы ... тот же результат!
Сорин-Михай Опря
1
СПАСИБО за то, что вы не просто сказали, что пароли плохие, не используйте их, некоторые из нас на устаревшем оборудовании OLDDDD просто нуждаются в этом, пока не прибудет новое оборудование :)
Теодор Хауэлл,
6

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

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

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

Эндрю Аллер
источник
Этот ответ лучше, чем принятый ответ.
vietnguyen09
1

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

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

lumbric
источник
Спасибо за предложение, но я обнаружил, что sshpass намного проще!
Сорин-Михай Опря
1

Я обнаружил, что sshpass работает, но так как termanal говорит, что 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которой там нет.

GuySoft
источник
0

Первое, что нужно сделать, это сделать ssh без ввода passowrd/bypassпароля, как вы можете видеть, мы можем использовать ssh-copy-id -i ./ssh/id_rsa.pubдля целевой машины.

После этого теста машина может быть удаленно с помощью SSH без пароля, а затем rsync на пути, конечно, с локальной машины на target/serverмашину

буди сатрийо
источник