Mam scenariusz, w którym muszę otworzyć port dla serwera za usługodawcą internetowym, który wydaje się blokować ruch. W takim przypadku mam zdalnie dedykowany serwer, do którego mogę ssh
podłączyć i używać dowolnych portów. Moim pragnieniem jest, aby połączyć się z serwerem za tą zaporą ogniową na serwerze dedykowanym, a następnie ogólnie otworzyć port, do którego klient innej aplikacji będzie miał dostęp w dowolnym momencie.
Myślałem, że to tak proste, jak z serwera za zaporą ISP:
ssh username@remote_server_ip -R remote_server_ip:12345:localhost:12345
A następnie po prostu połącz się z oprogramowaniem klienta remoteserver:12345
jako ustawienie serwera.
Dodatkowo sshd_config
ustawiłem GatewayPorts clientspecified
i kiedy sprawdzam netstat -tln | grep 12345
na zdalnym serwerze, widzę: Aktywne połączenia internetowe (tylko serwery)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 remote_server_ip:12345 0.0.0.0:* LISTEN
Niestety to na pozór nie działa. Podejrzewam, że coś mi wychodzi z argumentów ssh. Jakieś pomysły?
źródło
Odpowiedzi:
Jeśli dobrze rozumiem, chcesz utworzyć tunel ssh ze swojego komputera za usługodawcą internetowym i udostępnić jego usługę przez port na serwerze SSH.
W takim przypadku linia poleceń wydaje się poprawna. Robię coś podobnego.
Włączyłeś Gatewayports w konfiguracji sshd, więc wszystko jest dobrze, jeśli tego nie zrobiłeś, mógłbyś tylko powiązać port z adresem sprzężenia zwrotnego 127.0.0.1 na serwerze ssh.
Szybka uwaga: musiałem zrestartować mój serwer ssh, aby opcja gatewayport zaczęła działać. Ponowne uruchomienie usługi sshd powinno wystarczyć, ale nie zadziałało.
Widzę, że nie podajesz portu dla serwera ssh, co oznacza, że używasz portu 22, twój dostawca usług internetowych może w jakiś sposób z nim temperować.
Jeszcze jedna rzecz, bez względu na usługę, do której chcesz uzyskać dostęp na serwerze za ISP, upewnij się, że jego port jest powiązany z interfejsem 127.0.0.1, ponieważ to on wskazywał twój tunel. Sprawdź także, czy usługa przyjmuje połączenia z tego interfejsu i sprawdź dwukrotnie port, na którym działa.
@barlop -R 127.0.0.1:12345:localhost:12345 byłoby błędne, usługa byłaby dostępna tylko dla osób łączących się na adapterze pętli zwrotnej.
Ale czytając post Barlopa, zdałem sobie sprawę, pamiętaj o sposobie, w jaki ustawiłeś polecenie. Port otwierany na serwerze ssh będzie powiązany z tym samym adresem IP, na którym działa twój serwer SSH. Co oznacza, że usługa jest narażona na działanie Internetu, być może jest to, czego chcesz, ale jeśli ppl, który potrzebuje usługi, łączy się z sieci LAN, musisz powiązać ten port z ipem LAN serwera ssh. TAKŻE JESTEŚ PEWNY, że serwer ssh, z którym się łączysz, nie znajduje się za zaporą ogniową, która wewnętrznie przekierowuje port 22 na serwer? w takim przypadku oznacza to, że prosisz serwer ssh o otwarcie portu na ip, który należy do zapory ogniowej, co jest oczywiście niemożliwe.
W tym trybie musisz otworzyć port na własnym serwerze LAN ssh, wtedy lokalne komputery mogą się tam podłączyć bezpośrednio, jeśli chcesz udostępnić usługę w Internecie, musisz przekierować port z zapory ogniowej do portu otworzyłeś na serwerze ssh.
Po prostu staram się wszystko objąć, trudno jest uzyskać jasny obraz tego, co się dzieje bez dodatkowych informacji na temat infrastruktury.
Awww przyjemności z pracy w sieci.
źródło