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.


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/

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.


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 .


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.


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ę

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.