Jak skonfigurować Rsync bez hasła z SSH w systemie UNIX / Linux?

19

Jak skonfigurować rsync między dwoma hostami bez podawania hasła?


źródło
To powinno być bardzo pomocne: blogs.oracle.com/jkini/entry/how_to_scp_scp_and
Tom
Maverick143 udzielił odpowiedzi, ale to pytanie tak naprawdę nie należy do StackOverflow, ponieważ ma niewiele wspólnego z programowaniem. SuperUser.com byłby bardziej odpowiedni.
Martin

Odpowiedzi:

30

Poniżej znajduje się artykuł z The Geek Stuff :

1. Przetestuj rsync przez ssh (z hasłem):

Wykonaj rsync, aby upewnić się, że prosi o hasło do twojego konta na zdalnym serwerze i pomyślnie kopiuje pliki na zdalny serwer.

Poniższy przykład zsynchronizuje folder lokalny z folderem /home/test zdalnym /backup/test(na 192.168.200.10serwerze).

Powinno to poprosić Cię o podanie hasła do konta na zdalnym serwerze.

rsync -avz -e ssh /home/test/ [email protected]:/backup/test/

2. ssh-keygen generuje klucze.

Teraz skonfiguruj sshtak, aby nie pytał o hasło podczas wykonywania ssh. Użyj ssh-keygenna serwerze lokalnym, aby wygenerować klucze publiczne i prywatne.

$ ssh-keygen

Wpisz hasło (puste, jeśli nie ma hasła):

Wprowadź ponownie to samo hasło: Uwaga: Gdy pojawi się monit o wprowadzenie hasła, naciśnij klawisz Enter i nie podawaj tutaj żadnego hasła.

3. ssh-copy-id kopiuje klucz publiczny na zdalny host

Użyj ssh-copy-id, aby skopiować klucz publiczny do zdalnego hosta.

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

Uwaga: powyżej poprosi o hasło do konta użytkownika na zdalnym hoście i automatycznie skopiuje klucz publiczny do odpowiedniej lokalizacji. Jeśli ssh-copy-id nie działa dla Ciebie, skorzystaj z metody, którą omówiliśmy wcześniej, aby skonfigurować hasło ssh bez logowania.

4. Wykonaj rsync przez ssh bez hasła

Teraz powinieneś mieć możliwość ssh do zdalnego hosta bez podawania hasła.

ssh [email protected]

Wykonaj ponownie rsync, tym razem nie powinien prosić o podanie hasła.

rsync -avz -e ssh /home/test/ [email protected]:/backup/test/
MangeshBiradar
źródło
To pomaga lepiej. troy.jdmz.net/rsync/index.html
MangeshBiradar
5
Wyczyść kopię i wklej z thegeekstuff.com/2011/07/rsync-over-ssh-without-password powinieneś odwołać się do oryginalnego autora.
Lawrence Cherone
Jeśli potrzebujesz użyć innego użytkownika, możesz to zrobić, wykonując ssh-copy-id: ssh-copy-id -i ~ / .ssh / id_rsa.pub [email protected]
Finni McFinger
1

Generuj klucz publiczny w ServerA

$ ssh-keygen
$ Enter passphrase (empty for no passphrase):
$ Enter same passphrase again:

Klucz publiczny zostanie wygenerowany i zapisany w

~/.ssh/id_rsa.pub

Skopiuj klucz publiczny do zdalnego hosta

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.100

Lub

  • Otwórz id_rsa.pub, skopiuj treść
  • Zaloguj się do serwera B, używając tego samego użytkownika w komendzie rsync
  • W ServerB dodaj zawartość do ~/.ssh/authorized_keys. Utwórz plik, jeśli nie istnieje. Upewnij się, że tryb pliku to 700.
Johny
źródło
0

Wszystkie te sugestie rsync zawodzą przy użyciu najnowszej wersji w sierpniu 2017 r. Na Ubuntu 16.04 LTS. Żaden z nich nie działa.

Wszystkie mają również wspólny brak wymaganego demona rsync działającego na serwerze plików.

Ta odpowiedź działa z ogólnym systemem Linux NAS

TUTAJ SĄ KROKI:
1) UŻYJ rsync, jak pokazano poniżej. (do katalogu w katalogu / mnt lub / media, które utworzyłeś lub na zamontowanym urządzeniu. nie ma znaczenia, które) 2) PRZENOŚ pliki za pomocą scp, jak pokazano poniżej. FileZilla też będzie działać.

Wszystko to (oprócz FileZilla) może działać w cronie bez hasła.


Ta konfiguracja działa bardzo dobrze. Jedyne, kiedy potrzebujesz hasła, to konfiguracja początkowego ssh-copy-id w celu skonfigurowania logowania bez hasła RSA. Następnie programujesz go raz w FileZilla. Następnie, z dnia na dzień, nie pojawia się monit o hasło. To jest łatwe. A najlepsze jest to, że możesz korzystać ze wszystkich zalet programu rsync.

Ta odpowiedź wyjaśnia, jak korzystać z samego rsync bez hasła.

Ponadto nie ma potrzeby instalowania kolejnego demona (rsync) w żadnym systemie.

Jeśli jeszcze tego nie zrobiłeś, zrób to:

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rse.pub NASserver

i przetestuj to w ten sposób:

ssh NASserver

a może coś takiego:

scp myfile myusername@NASserver:Documents

Mam drugi dysk twardy, więc używam rsync, aby skopiować dysk rozruchowy do podkatalogu na sdb1 (zamontowany pod / mnt i wykluczony z rsync).

Jeśli nie masz fizycznego dysku twardego i masz wystarczająco dużo miejsca, po prostu utwórz podkatalog w / mnt (lub / media) i użyj go.

Tak długo, jak katalog jest wykluczony, nie ma znaczenia, czy jest on na osobnym dysku, czy nie.

Oto skrypt kopii zapasowej:

cls
echo "EMPTYING TRASH"
rm ~/.local.share/Trash/*
echo "====================================================================="
echo "         BEGINNING rsync from root to /mnt/full/sysbkp"
echo "====================================================================="
time sudo rsync -aAXv / --delete --ignore-errors --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/full/mysystem

PO Rsync użyj skryptu:

Zawsze tworzę nowy katalog na docelowym serwerze NAS: / mnt / fullsys / mysystem, więc przesyłane są tylko odpowiednie pliki.

ssh -e"mv /mnt/fullsys/mysystem mysystem.bak" myusername@NASserver
ssh -e"mkdir /mnt/fullsys/mysystem" myusername@NASserver
scp -r /mnt/full/mysystem myusername@NASserver:/mnt/fullsys/mysystem

Voila! To zajmuje trochę czasu, ale potem jest gotowe.

Oba skrypty mogą działać poprawnie w cronie.


Alternatywą jest użycie FileZilla do ręcznego wysłania go do serwera NAS.

Ponieważ można usunąć, zawsze make a new directory and enter itkorzystam z FileZilla na docelowym dysku twardym 1 TB, więc przesyłane są tylko odpowiednie pliki.

Dopiero po zakończeniu przesyłania usuwam starszą wersję.

Voila Sukces.

SDsolar
źródło
-1

zaznacz, że użytkownik pod adresem byłby lepszy

ssh-copy-id -i ~/.ssh/id_rsa.pub <user_in_server>@192.168.1.100
DreamAndDead
źródło
2
Chociaż może to odpowiedzieć na pytanie, lepszym rozwiązaniem byłoby podanie wyjaśnienia, dlaczego tak się dzieje.
DavidPostill
Również składnia. Wierzę, że to jest używane jako podstawiania poleceń coś takiego: rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)wtedy wszyscy excludesi --deleteitd. I nie sprawiły, że działa jeszcze, ale to jest najbliższy widziałem. Podobno musisz to zrobić, nawet jeśli możesz już to zrobić sshi scpdo serwera docelowego, a demon rsync musi być uruchomiony, ponieważ nie używa normalnego formatu sftp. Nadal szukam.
SDsolar,