Jak skonfigurować rsync między dwoma hostami bez podawania hasła?
Jak skonfigurować rsync między dwoma hostami bez podawania hasła?
Odpowiedzi:
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
(na192.168.200.10
serwerze).Powinno to poprosić Cię o podanie hasła do konta na zdalnym serwerze.
rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
2. ssh-keygen generuje klucze.
Teraz skonfiguruj
ssh
tak, aby nie pytał o hasło podczas wykonywania ssh. Użyjssh-keygen
na 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 user@192.168.200.10
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 user@192.168.200.10
Wykonaj ponownie rsync, tym razem nie powinien prosić o podanie hasła.
rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
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
~/.ssh/authorized_keys
. Utwórz plik, jeśli nie istnieje. Upewnij się, że tryb pliku to 700.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 it
korzystam 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.
zaznacz, że użytkownik pod adresem byłby lepszy
ssh-copy-id -i ~/.ssh/id_rsa.pub <user_in_server>@192.168.1.100
rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)
wtedy wszyscy excludes
i --delete
itd. 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ć ssh
i scp
do serwera docelowego, a demon rsync musi być uruchomiony, ponieważ nie używa normalnego formatu sftp. Nadal szukam.