Obecnie jestem z dala od mojej sieci LAN i muszę wykonać kopię zapasową laptopa. Mam nieco nową kopię mojego laptopa na serwerze i zwykle tworzę kopię zapasową za pomocą rsync. Teraz chcę to zrobić, ale poza moją siecią LAN.
Krótko mówiąc, chcę wysłać dane z A do C przez B, gdzie A to mój laptop, B mój router, a C mój serwer.
Znalazłem to polecenie A$ scp -oProxyCommand="ssh B nc %h %p" thefile C:destination
:, to działa dobrze do przesyłania plików przez scp - ale ponieważ mam już większość danych na moim serwerze, chcę używać rsync tylko do synchronizacji delty.
Próbowałem: A$ rsync file -e 'ssh B ssh' C
i działa tak długo, jak pojawi się monit o podanie hasła dla użytkownika: C. Jednak po wprowadzeniu hasła nic się nie dzieje. Na routerze jest uruchomiony Tomato v1.28 i nie mogę go skonfigurować do korzystania z pliku konfiguracyjnego ssh, aby umożliwić mu zalogowanie się na C bez hasła.
Wszelkie pomysły na to, jak to zrobić?
ProxyCommand
w pliku konfiguracyjnym. Rsync powinien to odebrać.Odpowiedzi:
Na to pytanie zasadniczo udzielono odpowiedzi gdzie indziej, w tym tutaj dla scp i tutaj dla rsync . Ponieważ ta ostatnia zawiera moją odpowiedź, ale żadna odpowiedź nie została zaakceptowana, powtórzę ją tutaj.
Jak można zauważyć, można użyć
rsync
„s-e | --rsh
opcję, ale to będzie trochę bardziej skomplikowane:Lub, jeśli twoja wersja
ssh
jest wystarczająco nowa (OpenSSH> = v7.3), możesz użyć opcji-J
(ProxyJump
)Należy zauważyć, że używam
-A
(przekierowanie agenta), ale należy również praca z uwierzytelniania hasłem, jeśli nie używać klawiszy, i, oczywiście, można zastąpićproxy
zB
idest
zeC
w swoim przykładzie.Jeśli przypadkiem nie masz wystarczająco nowej
ssh
wersji (> = 5.3, IIRC),netcat
zamiast-W
opcji możesz użyć opcjissh
:Wreszcie, jak już wspomniano w komentarzach, możesz umieścić plik
ProxyCommand
w swoim$HOME/.ssh/config
pliku, abyś nie musiał mieć tak skomplikowanej linii poleceń. W szczególności dodaj coś takiego:Lub przy użyciu
ProxyJump
OpenSSH> = v 7.3:Następnie powinieneś być w stanie zrobić:
źródło