Mam dwa zdalne hosty.
host1-> 10.3.0.1
host2-> 10.3.0.2
Oba działają na serwerze ssh.
Serwer ssh nasłuchuje na porcie 22 na hoście 1 i na porcie 6969 na hoście 2. Teraz, używając mojego komputera lokalnego, muszę skopiować coś z hosta1 na host2 bez logowania się do hosta1 lub host2 przez ssh. Coś jak,
scp [email protected]:/path/to/file [email protected]/path/to/file
Jak mogę to zrobić, pamiętaj, że dwa hosty używają różnych portów dla ssh.
-P
istnieje flaga określająca port, który ma być używany, w przypadku transferu zdalnego do zdalnego, ssh jako brak określonego zachowania dotyczącego sposobu określania portu dla jednego hosta ...Odpowiedzi:
W przeszłości sposób, w jaki
scp
działał ( naiwnie ) w celu kopiowania plików między zdalnymi systemami, był bardzo niewygodny: na przykład pisałeśscp
najpierw otworzyssh
sesję nascp
zdalnym 1 , a następnie uruchomi się stamtąd na zdalnym 2. Aby to zadziałało, musisz skonfigurować poświadczenia autoryzacji dla remote2 na remote1.Zamiast tego nowoczesny sposób („nowoczesny”, ponieważ został zaimplementowany zaledwie kilka lat temu i być może nie wszyscy są w stanie to
-3
zrobićscp
) wymaga dwóch kroków. Pierwszym niezbędnym krokiem jest~/.ssh/config
skonfigurowanie wszystkich opcji połączenia zarówno ze zdalnym 1, jak i zdalnym 2 w następujący sposób:W ten sposób staje się możliwe przekazywanie wszystkich niezbędnych opcji do polecenia bez dwuznaczności : na przykład, jeśli powiedzieliśmy w interfejsie CLI, że korzystamy z portu 2222 bez powyższej konfiguracji, nie byłoby jasne, czy mówimy o zdalnym1, czy zdalnym2 , i podobnie dla pliku zawierającego klucze kryptograficzne. W ten sposób CLI pozostaje uporządkowany i prosty.
Po drugie, użyj
-3
opcji w następujący sposób:Ta
-3
opcja nakazujescp
kierowanie ruchu przez komputer, na którym wydano polecenie, nawet jeśli jest to strona trzecia transferu. W ten sposób poświadczenia autoryzacji muszą znajdować się tylko na komputerze wydającym, stronie trzeciej.źródło
~/.ssh/config
pliku: cloud.google.com/compute/docs/gcloud-compute, ale nie sądzę, że AWS ma takie samo wsparcie-v
.Ostatnim razem, gdy tego próbowałem, scp nie był w stanie tego zrobić. Twój wiersz poleceń wygląda dobrze. To obejście będzie działać:
źródło
W moim przypadku robiłem kopię zdalną do zdalnej, bez
-3
argumentu. Port podany z parametrem „-P” działa z pierwszym serwerem, ale port 22 jest używany z drugim serwerem.Rozwiązaniem jest edycja
/etc/ssh/ssh_config
plikuserver1
i dodanie następujących wierszy:W ten sposób port 1234 jest używany dla obu z nich. Może być inaczej.
To rozwiązanie ma lepszą przepustowość niż poprzednie rozwiązania, ponieważ komunikowanie jest bezpośrednie.
źródło
Źródło i cel można określić jako identyfikator URI w postaci scp: // [użytkownik @] host [: port] [/ ścieżka]
abyś mógł uruchomić:
źródło