Polecenie przekierowania portu 80 z komputera lokalnego ( localhost
) do zdalnego hosta na porcie 8000 to:
ssh -R 8000:localhost:80 oli@remote-machine
Wymaga to dodatkowego dostosowania na serwerze SSH, dodaj linie do /etc/ssh/sshd_config
:
Match User oli
GatewayPorts yes
Następnie ponownie załaduj konfigurację, wykonując serwer sudo reload ssh
.
Ustawienie GatewayPorts yes
powoduje, że SSH wiąże port 8000 z adresem symbolu wieloznacznego, więc staje się dostępny dla adresu publicznego remote-machine
( remote-machine:8000
).
Jeśli chcesz mieć opcję niewiążącą wszystkiego na adresie wieloznacznym, zmień GatewayPorts yes
na GatewayPorts clientspecified
. Ponieważ ssh
domyślnie wiąże się z adresem pętli zwrotnej, musisz określić pusty bind_address
dla powiązania adresu z symbolem wieloznacznym:
ssh -R :8000:localhost:80 oli@remote-machine
:
Zanim 8000
jest obowiązkowe, jeśli GatewayPorts
jest ustawiony clientspecified
i chcesz, aby umożliwić dostęp do publicznego remote-machine:8000
.
Odpowiednie fragmenty instrukcji:
ssh (1)
-R [adres_powiązania:] port: host: port_portu
Określa, że dany port na hoście zdalnym (serwerze) ma być przekazywany do danego hosta i portu po stronie lokalnej. Działa to poprzez przydzielenie gniazda do nasłuchiwania portu po stronie zdalnej, a po każdym połączeniu z tym portem połączenie jest przekazywane przez bezpieczny kanał, a połączenie z portem hosta jest nawiązywane z komputera lokalnego. Domyślnie gniazdo nasłuchujące na serwerze będzie powiązane tylko z interfejsem sprzężenia zwrotnego. Można to zastąpić, podając adres powiązania. Pusty adres powiązania lub adres „*” wskazuje, że gniazdo zdalne powinno nasłuchiwać na wszystkich interfejsach. Określenie zdalnego adresu powiązania powiedzie się tylko wtedy, gdy włączona jest opcja GatewayPorts serwera (patrz sshd_config (5)).
sshd_config (5)
GatewayPorts
Określa, czy zdalne hosty mogą łączyć się z portami przekierowanymi dla klienta. GatewayPorts może być użyty do określenia, że sshd powinien umożliwiać zdalnym przekierowaniom portów wiązanie się z adresami innymi niż sprzężenie zwrotne, umożliwiając w ten sposób innym hostom połączenie. Argumentem może być „nie”, aby wymusić, aby zdalne przekierowania portów były dostępne tylko dla lokalnego hosta, „tak”, aby wymusić zdalne przekierowanie portów, aby powiązało się z adresem z symbolem wieloznacznym, lub „określone przez klienta”, aby pozwolić klientowi wybrać adres, na który przekazywanie jest związane. Domyślne ustawienie to „nie”.
Zobacz też:
GatewayPorts
była magiczna kula tutaj. Podoba mi się, że znalazłeś wersję, która pozwala mi ograniczyć tę dość zaawansowaną technikę do niektórych użytkowników.ssh
polecenie. Konfiguruje, czy inni klienci mogą komunikować się z przekierowanymi portami na serwerze.-R :8000:127.0.1.1:80
(lub inny127.x.x.x
adres). W przeciwnym razie nie, nie będziesz mógł nauczyć się zdalnego adresu IP.Jeśli serwer tak
GatewayPorts no
, możesz osiągnąć ten sam wynik, wykonując gossh -g -L 8001:localhost:8000 oli@remote-machine
na serwerze po wykonaniussh -R
polecenia na kliencie. Dzięki temu port sprzężenia zwrotnego 8000 na serwerze będzie dostępny we wszystkich interfejsach na porcie 8001.źródło