ssh -R :8080:localhost:80 aptm.in - udostępnij lokalny port 80 na aptm.in:8080
Opcja -R pozwala tunelować port TCP z wewnętrznej sieci do zdalnego hosta. Składnia jest następująca:
-R [bind_address:]port:host:hostport
-R [bind_address:]port:local_socket
-R remote_socket:host:hostport
-R remote_socket:local_socket
-R [bind_address:]port
czyli -R 8080:localhost:80 uruchomi tunel na aptm.in:8080 do localhost:80. Oczywiście zamiast localhost:80 mógłby być inny host (w szczególności dostępny tylko wewnętrznie), który zostanie udostępniony zdalnie (w szczególności do Internetu).
Jak to działa — krok po kroku
Rozłóżmy onelinera na czynniki pierwsze:
no
(wartość domyślna) - uruchamiaj takie tunelowanie wyłącznie na 127.0.0.1, co powoduje, że tylko serwer ma dostęp do drugiej końcówki tunelu,
yes
uruchamiaj takie tunelowanie na wszystkich interfejsach sieciowych (binduj na 0.0.0.0) w wyniku czego zdalne hosty mogą również skorzystać,
clientspecified
(polecana przeze mnie;) - niech klient zadecyduje na jakich adresach tunel ma nasłuchiwać, a zatem:
-R 127.0.0.1:8080:localhost:80- słuchaj tylko na 127.0.0.1-R 8080:localhost:80- słuchaj tylko na 127.0.0.1 - jak wyżej-R 0.0.0.0:8080:localhost:80- słuchaj na wszystkich interfejsach-R :8080:localhost:80- słuchaj na wszystkich interfejsach - jak wyżej