Różnice między ssh -L a -D

52

Próbuję zrozumieć różnice między ssh -L a -D. Czy jest coś jeszcze oprócz tego -D to tylko skarpetki?

Dzięki!


źródło

Odpowiedzi:

53

ssh -Lotwiera 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:80Jeśli otworzysz http://localhost:4444w przeglądarce, faktycznie zobaczysz stronę Google.

ssh -Dotwiera 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 7777Gdy powiesz przeglądarce, aby używała localhost:7777jako 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.

Jessidhia
źródło
6
Jednym ważnym szczegółem dotyczącym opcji -L jest to, że można powiązać port lokalny tylko do użytku lokalnego, np. Localhost: 80: remotehost: 8080, ale można również powiązać ten port dla kogokolwiek innego. Możesz więc sprawić, aby maszyna w sieci lokalnej oferowała dostęp do maszyny zdalnej przez tunel, bez wiedzy o tym żadnej z maszyn lokalnych.
dividebyzero
@dividebyzero Mam problem z wyobrażeniem sobie tego, co opisujesz
Michael Dorst,
@MichaelDorst Mam na myśli to zdanie ze strony: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.
dividebyzero
ssh -L 4444:google.com:80nie działa dla mnie, wymaga innego parametru do zalogowania, np. uż[email protected]
Saman Mohamadi
6

W SSH -Dokreś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 -Lokreś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.

Mughil
źródło