Mam maszynę kilka przeskoków i muszę skonfigurować przekierowanie portów, aby przesyłać pliki.
Edycja: Aby wyjaśnić, wiele skoków jest potrzebnych, aby uzyskać dostęp do zdalnego komputera. Z mojego komputera skonfigurowałem VPN, do którego mogę uzyskać dostęp do 10.255.xx - to jedyna maszyna, z którą mogę się połączyć za pośrednictwem VPN. Po zalogowaniu się do .xx mogę połączyć się z innymi komputerami - jednym z nich jest.
Z mojej maszyny:
ssh -L 4567:localhost:4567 [email protected]
Następnie z tej maszyny:
ssh -L 4567:localhost:22 [email protected]
Mogę wtedy
scp -P 4567 me@localhost:/path/to/large/file.gz .
Zostawiłem to w spokoju, ale okazało się, że transfer umarł w pewnym momencie.
Widziałem kilka sugestii, aby użyć rsync over ssh, aby wznowić przesyłanie, ale nie jestem pewien, jak to skonfigurować. czy to możliwe?
ssh
rsync
file-transfer
scp
ssh-tunnel
Chris
źródło
źródło
scp [email protected]:/path/to/large/file.gz .
osiągnąłby dokładnie tego samego? Która wersja scp (ssh) jest zainstalowana na kliencie i serwerze?Odpowiedzi:
W przypadku niektórych wersji scp (wersja na komputerze źródłowym wydaje się być kluczem) wystarczy ponowne wykonanie polecenia scp, aby wznowić przesyłanie. Ale bądź ostrożny! Jeśli Twoja wersja nie obsługuje przesyłania częściowego, plik częściowy zostanie po prostu nadpisany.
Następujące przełączniki rsync są przydatne do wznowienia przerwanego transferu, jeśli scp go nie obsługuje:
Komenda
powinien mieć pożądany efekt. Zauważ, że
-p
przełącznik musi być małymi literami dla ssh.źródło
10.255.y.y
to komputer kliencki.Użyj sftp zamiast scp
W Twoim przypadku:
Ze strony podręcznika użytkownika sftp:
źródło
rsync domyślnie używa ssh, może być konieczne podanie dokładnej komendy ssh za pomocą przełącznika -e rsync. Ma także opcję --partial, która powinna przechowywać niekompletny plik, aby mógł wznowić przesyłanie.
źródło
Naprawdę nie rozumiem, jaki jest sens waszych tuneli, więc oto jak poszedłbym rozwiązać problem:
spowoduje to otwarcie tunelu zwrotnego z komputera lokalnego (localhost) na komputer zdalny (remotehost). $ tunnelPort to port, na którym tunel znajduje się na zdalnym hoście. $ localSSHPort to port, na którym działa lokalny sshd, a $ remoteSSHPort to miejsce, w którym nasłuchuje sshd zdalnego hosta.
Teraz, gdy jesteś w tunelu (wstecz!), Możesz mniej więcej zrobić to, co zaproponował Dennis:
flagi -a i -z są wyjaśnione na stronie podręcznika rsync, więc nie będę ich omawiać. To, co dzieje się teraz, polega na tym, że po uruchomieniu rsync na zdalnym hoście, jak wyżej, wypycha wszystkie dane do portu $ tunnelPort, który jest następnie przesyłany do sshd $ localSSHPort twojego localhosta.
Mam nadzieję, że to pomogło.
źródło