Mamy publiczny serwer, który akceptuje połączenia SSH od wielu klientów za firewallami.
Każdy z tych klientów tworzy tunel zwrotny SSH za pomocą ssh -R
polecenia z ich serwerów sieciowych na porcie 80 na naszym serwerze publicznym.
Port docelowy (po stronie klienta) tunelu Reverse SSH to 80, a port źródłowy (po stronie serwera publicznego) zależy od użytkownika. Planujemy utrzymywać mapę adresów portów dla każdego użytkownika.
Na przykład klient A tunelowałby swój serwer sieciowy na porcie 80 do naszego portu 8000; klient B od 80 do 8001; klient C od 80 do 8002.
Client A: ssh -R 8000:internal.webserver:80 clienta@publicserver
Client B: ssh -R 8001:internal.webserver:80 clientb@publicserver
Client C: ssh -R 8002:internal.webserver:80 clientc@publicserver
Zasadniczo próbujemy powiązać każdego użytkownika z portem i nie pozwolić mu na tunelowanie do innych portów.
Gdybyśmy korzystali z funkcji tunelowania w przód SSH ssh -L
, moglibyśmy zezwolić na tunelowanie portu przy użyciu permitopen=host:port
konfiguracji. Jednak nie ma odpowiednika dla odwrotnego tunelu SSH.
Czy istnieje sposób ograniczenia portów tunelowania wstecznego na użytkownika?