Безмовна Rsync через SSH без аутентифікації ключа [Un-Safe]


12

Я хочу створити завдання RSync, яке з'єднувалося б через SSH.

У мене є комп'ютер (резервне копіювання @ myhost) та віддалений хост (тест @ remhost), і мені потрібно створити резервну копію папки ~ / щось із усім вмістом. Тест користувача ssh має лише доступ READ до всіх файлів і папок у папці ~ /. Я хочу використовувати rsync для копіювання папки test @ remhost: ~ / something у папку резервного копіювання @ 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 або будь-які інші). Я просто хочу просту команду, яка б увійшла до мене і зробила роботу.

EDIT: Можливий сценарій, якщо автентифікація відкритого ключа відключена, і ви не можете змінити це. Наприклад, якщо ви використовуєте OpenSSH, для редагування файлу sshd_configта додавання вам знадобляться кореневі привілеї на сервері PubkeyAuthentication yes.

EDIT: Ось що, нарешті, спрацювало для мене:

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

Зверніть увагу, що цей метод не вважається безпечним, оскільки він надсилає пароль у простому тексті, і він уразливий для атак людини в середині. Для більш сильної безпеки радимо використовувати аутентифікацію ключів.


3
Ви не отримаєте жодної відповіді, якщо скажете людям не говорити вам відповіді.
Майк Скотт

7
Це безглуздо. У чому проблема автентифікації ключа? Якщо налаштована автентифікація на основі ключів, то з цього моменту у вас є лише проста команда, яка виконує завдання автоматично, саме те, що вам потрібно. Тому я не бачу, в чому проблема. Збереження пароля десь із зазначенням "автоматичного" - це одна з найбільших дірок у безпеці, яку я можу собі уявити, який сенс це робити?
ЛГБ

Мені не потрібно нікого читати лекції з безпеки. Я вже знаю наслідки. Я просто повинен залишити все на сервері як є і нічого не змінювати. Для вашої інформації я вже спробував це з ключами, і він все ще запитує мене, тому ваш аргумент недійсний!
Сорін-Міхай Опреа

1
Ні, з поважних причин такого параметра за замовчуванням немає. Подивіться на відповідь Мігса, якщо ви хочете такого параметра.
мастило

2
@Sorin Mihai Oprea: Ну, якщо це не працює для вас, це погано? Цікаво. Для вашої інформації: як інтернет-інженер, що працює в Інтернет-провайдері, ми використовуємо аутентифікацію на основі ключів із ssh на більш ніж 100 серверах. Це працює для нас, цікаво. Не називайте щось погане лише тому, що ви не розумієте, як воно працює і як воно має бути налаштоване. Якщо ви маєте рацію, це не працюватиме ні для кого, хто би привернув певну увагу як основну помилку впровадження ssh-сервера :) Отже, мій агрумент недійсний, просто ви не можете його налаштувати з якихось причин. Це не те саме, вибачте.
ЛГБ

Відповіді:


30

можливо спробуйте sshpass .

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

Я шукав щось подібне до того, як скопіював свої ключі навколо, але оскільки я все-таки маю свій ключ скрізь, коли мені це потрібно, я не спробував цього спробувати.

Зверніть увагу на відмову в цьому підручнику щодо видимості вашого пароля.


Для всіх, хто повинен це зробити:

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

Ти найбільш бажаний. Хоча я погоджуюся з іншими людьми, що автентифікація відкритих ключів є найкращим рішенням у цьому питанні, іноді потрібні альтернативні методи, поки ми знаємо про компроміси при використанні альтернатив.
Мігс

Справді ... але тому це називається з відкритим кодом так? Кілька ароматів ... той самий результат!
Сорін-Міхай Опреа

1
ДЯКУЙТЕ за те, що ви не просто сказали, що паролі погано не використовуйте їх, деякі з нас на застарілому обладнанні OLDDDD просто потребують цього, щоб дістатись до появи нового обладнання :)
Теодор Хоуелл

7

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

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

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


Ця відповідь краще, ніж прийнята відповідь.
vietnguyen09

1

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

У будь-якому випадку expectповинен бути спосіб досягти того, що ви хочете зробити. Ви не можете передавати пароль на ssh, але це щось дуже схоже. Як це зробити, відповіді тут на stackoverflow .


Дякую за пропозицію, але я насправді знайшов sshpass набагато простіше!
Сорін-Міхай Опреа

1

Я виявив, що 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якої немає.


0

перше, що робити ssh без passowrd/bypassвходу пароля, як ви бачите, ми можемо використовувати ssh-copy-id -i ./ssh/id_rsa.pubдля націлювання машини.

Після цього випробування автомат можна віддалено за допомогою ssh без пароля, а потім rsync в наступному шляху, звичайно, з локальної машини в target/serverмашину

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.