Próbuję zrozumieć różnice między ssh -L a -D. Czy jest coś jeszcze oprócz tego -D to tylko skarpetki?
Dzięki!
Próbuję zrozumieć różnice między ssh -L a -D. Czy jest coś jeszcze oprócz tego -D to tylko skarpetki?
Dzięki!
Odpowiedzi:
ssh -L
otwiera port lokalny. Wszystko, co wysyłasz do tego portu, przechodzi przez połączenie ssh i przechodzi przez serwer. Jeśli to zrobisz, np. ssh -L 4444:google.com:80
Jeśli otworzysz http://localhost:4444
w przeglądarce, faktycznie zobaczysz stronę Google.
ssh -D
otwiera port lokalny, ale nie ma określonego punktu końcowego, jak w przypadku -L
. Zamiast tego udaje, że jest proxy SOCKS. Jeśli otworzysz, np. ssh -D 7777
Gdy powiesz przeglądarce, aby używała localhost:7777
jako proxy SOCKS, wszystko, czego żąda przeglądarka, przechodzi przez tunel ssh. Do publicznego Internetu to tak, jakbyś przeglądał z serwera ssh zamiast z komputera.
The bind_address of “localhost” indicates that the listening port be bound for local use only, while an empty address or ‘*’ indicates that the port should be available from all interfaces.
ssh -L 4444:google.com:80
nie działa dla mnie, wymaga innego parametru do zalogowania, np. użytkownik@example.com
W SSH -D
określa lokalne „dynamiczne” przekierowanie portów na poziomie aplikacji.
SSH -D [bind_address:]port
Określa lokalne „dynamiczne” przekierowanie portów na poziomie aplikacji. Działa to poprzez przydzielenie gniazda do nasłuchiwania portu po stronie lokalnej, opcjonalnie powiązanego z określonym adresem bind_address. Za każdym razem, gdy zostanie nawiązane połączenie z tym portem, połączenie jest przekazywane dalej przez bezpieczny kanał, a następnie protokół aplikacji jest używany do ustalenia, gdzie można się połączyć ze zdalnego komputera. Obecnie obsługiwane są protokoły SOCKS4 i SOCKS5, a ssh będzie działać jak serwer SOCKS. Tylko root może przekazywać uprzywilejowane porty. Dynamiczne przekierowanie portów można również określić w pliku konfiguracyjnym.
Adresy IPv6 można określić za pomocą alternatywnej składni: [adres_powiązania /] lub umieszczając adres w nawiasach kwadratowych.
Tylko administrator może przekazywać uprzywilejowane porty. Domyślnie port lokalny jest powiązany zgodnie z ustawieniem GatewayPorts. Można jednak użyć jawnego adresu bind_address, aby powiązać połączenie z określonym adresem. Adres bind „localhost” wskazuje, że port nasłuchujący jest powiązany tylko do użytku lokalnego, a pusty adres lub „*” oznacza, że port powinien być dostępny ze wszystkich interfejsów.
Ponadto ssh -L
określa, że dany port na hoście lokalnym (klienckim) ma być przekazany do danego hosta i portu po stronie zdalnej.
SSH -L [bind_address:]port:host:hostport
Określa, że dany port na hoście lokalnym (klienckim) ma być przekazany do danego hosta i portu po stronie zdalnej. Działa to poprzez przydzielenie gniazda do nasłuchiwania portu po stronie lokalnej, opcjonalnie powiązanego z określonym adresem bind_address. Ilekroć nawiązywane jest połączenie z tym portem, połączenie jest przekazywane dalej przez bezpieczny kanał, a połączenie jest nawiązywane z portem hosta portu hosta ze zdalnego komputera. Przekierowania portów można również określić w pliku konfiguracyjnym. Adresy IPv6 można określić za pomocą alternatywnej składni: [adres_powiązania /] port / host / port_portowy lub umieszczając adres w nawiasach kwadratowych.
Tylko administrator może przekazywać uprzywilejowane porty. Domyślnie port lokalny jest powiązany zgodnie z ustawieniem GatewayPorts. Można jednak użyć jawnego adresu bind_address, aby powiązać połączenie z określonym adresem. Adres bind „localhost” wskazuje, że port nasłuchujący jest powiązany tylko do użytku lokalnego, a pusty adres lub „*” oznacza, że port powinien być dostępny ze wszystkich interfejsów.