Bezsłówkowy Rsync przez SSH bez uwierzytelnienia klucza [Un-Safe]

12

Chcę skonfigurować zadanie RSync, które łączy się za pośrednictwem SSH.

Mam komputer (backup @ myhost) i host zdalny (test @ remhost) i muszę wykonać kopię zapasową folderu ~ / coś z całą zawartością. Test użytkownika ssh ma dostęp tylko do odczytu dla wszystkich plików i folderów w folderze ~ /. Chcę użyć rsync, aby skopiować folder test @ remhost: ~ / coś do folderu backup @ myhost: ~ / bak.

W tym celu używam następującego polecenia za pośrednictwem BASH na Ubuntu 11.10 (Oneiric):

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

Po wciśnięciu Enter dostaję to:

test@remhost's password:

Wpisuję hasło i rsync działa.

Chcę wykonać powyższe polecenie, aby automatycznie wprowadzić hasło i przekazać je jako parametr lub wprowadzić je automatycznie i rozpocząć zadanie.

Próbowałem wykonać, rsync -avz -e ssh test:password@remhost:~/something/ ~/bak/ale nadal prosi o hasło i jest denerwujące.

Nie chcę słyszeć o żadnym rodzaju kluczy (RSA, DSA ani żadnego innego). Chcę tylko prostego polecenia, które zaloguje mnie i wykona zadanie.

EDYCJA: Możliwym scenariuszem może być wyłączenie uwierzytelniania za pomocą klucza publicznego i nie można tego zmienić. Np. Jeśli korzystasz z OpenSSH, potrzebujesz uprawnień roota na serwerze, aby edytować plik sshd_configi dodać PubkeyAuthentication yes.

EDYCJA: Oto, co w końcu dla mnie zadziałało:

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

Należy pamiętać, że ta metoda nie jest uważana za bezpieczną, ponieważ wysyła hasło zwykłym tekstem i jest podatna na ataki typu man-the-the-middle. Zaleca się użycie klucza uwierzytelnienia dla większego bezpieczeństwa.

Sorin-Mihai Oprea
źródło
3
Nie dostaniesz żadnych odpowiedzi, jeśli powiesz innym, żeby ci nie odpowiadali.
Mike Scott
7
To jest bezcelowe. Jaki jest problem z uwierzytelnianiem klucza? Jeśli skonfigurowano uwierzytelnianie oparte na kluczach, od tego momentu masz tylko proste polecenie, które wykonuje zadanie automatycznie, dokładnie tak, jak chcesz. Więc nie widzę w czym problem. Przechowywanie hasła w celu jego automatycznego określenia jest jedną z największych dziur w zabezpieczeniach, jakie mogę sobie wyobrazić, po co to robić?
LGB
Nie potrzebuję nikogo, aby dawał mi wykłady na temat bezpieczeństwa. Znam już implikacje. Po prostu muszę zostawić wszystko na serwerze bez zmian i niczego nie zmieniać. Dla twojej informacji próbowałem już tego z kluczami i wciąż prosi mnie o hasło, dlatego twój argument jest nieprawidłowy!
Sorin-Mihai Oprea
1
Nie, z dobrych powodów domyślnie nie ma takiego parametru. Spójrz na odpowiedź Miga, jeśli chcesz taki parametr.
lędźwiowy
2
@Sorin Mihai Oprea: Cóż, jeśli to nie działa, jest źle? Ciekawy. Dla Twojej informacji: jako inżynier systemu internetowego pracujący u dostawcy usług internetowych używamy uwierzytelniania opartego na kluczach z ssh na ponad 100 serwerach. Działa nam interesująco. Nie nazywaj czegoś złego tylko dlatego, że nie rozumiesz, jak to działa i jak trzeba to skonfigurować. Jeśli masz rację, nie działałoby to dla nikogo, kto zwróciłby uwagę jako główny błąd implementacji serwera ssh :) Więc mój agrument nie jest nieprawidłowy, po prostu nie możesz go dobrze skonfigurować z jakiegoś powodu. Przepraszam, to nie to samo.
LGB

Odpowiedzi:

30

może spróbuj sshpass .

wydaje się dość prosty w użyciu ... jest również dostępny przez apt.

Szukałem czegoś takiego, zanim skopiowałem swoje klucze, ale ponieważ mam klucz wszędzie tam, gdzie i tak już go potrzebuję, nie poświęciłem czasu na wypróbowanie tego.

Zwróć jednak uwagę na zastrzeżenie zawarte w tym samouczku dotyczące widoczności hasła.


Dla wszystkich, którzy muszą to zrobić:

sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
Migs
źródło
Proszę bardzo Chociaż zgadzam się z resztą ludzi, że uwierzytelnianie za pomocą klucza publicznego jest najlepszym rozwiązaniem w tej kwestii, czasami potrzebne są alternatywne metody, o ile jesteśmy świadomi kompromisów podczas korzystania z alternatyw.
Migs,
Rzeczywiście ... ale dlatego nazywa się to open source, prawda? Wiele smaków ... ten sam wynik!
Sorin-Mihai Oprea
1
DZIĘKUJEMY, że nie tylko powiedzcie, że hasła są złe, nie używajcie ich, niektórzy z nas na starym sprzęcie OLDDDD potrzebują ich tylko, dopóki nie pojawi się nowy sprzęt :)
Theodore Howell
7

Odmianą rozwiązania, które jest bardziej bezpieczne dla zagrożeń bezpieczeństwa, jest przechowywanie hasła w pliku z ścisłymi uprawnieniami i używanie -fflagi z shpass:

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

Różnica polega na tym, że wyświetlenie listy uruchomionych procesów nie wyświetli hasła w wierszu poleceń, pokaże tylko ścieżkę do pliku, w którym znajduje się hasło.

Andrew Allaire
źródło
Ta odpowiedź jest lepsza niż odpowiedź zaakceptowana.
vietnguyen09
1

Nie wyobrażam sobie żadnej sytuacji, w której uwierzytelnianie za pomocą klucza publicznego bez hasła byłoby lepszym rozwiązaniem dla zautomatyzowanych logowań ssh / rsync.

W każdym razie expectpowinien być sposobem na osiągnięcie tego, co chcesz zrobić. Nie możesz przesłać hasła do ssh, ale jest to coś bardzo podobnego. Jak to zrobić, odpowiedź tutaj w Stackoverflow .

lędźwiowy
źródło
Dziękuję za sugestię, ale tak naprawdę uważam, że sshpass jest o wiele prostszy!
Sorin-Mihai Oprea
1

Odkryłem, że sshpass działa, ale ponieważ termanal mówi, SSHPASS read: Enter passphrase for key '/home/ubuntu/.ssh/id_rsa':że musisz uruchomić coś takiego:

sshpass -P passphrase -p 'password' rsync /path/to hostname:/destination/path -av --progress -e ssh

Gdzie -Pokreśla, które zapytanie należy wyszukać, znalazłem to, uruchamiając sshpass -vi sprawdzając, czy szuka frazy, passwordktórej nie ma.

GuySoft
źródło
0

pierwszą rzeczą jest zrobienie ssh bez passowrd/bypassloginu, jak widać, że możemy użyć ssh-copy-id -i ./ssh/id_rsa.pubdo namierzania komputera.

Po tym teście maszyna może być zdalnie przez ssh bez hasła, a następnie rsync po drodze oczywiście z komputera lokalnego na target/servermaszynę

budi satriyo
źródło