Dlaczego nie mogę połączyć się zdalnie z odwrotnym portem tunelowym SSH, nawet przy włączonych portach GatewayPorts?

20

Potrzebuję stałego dostępu SSH do hosta w naszym dziale, którego adres IP jest dynamicznie przydzielany. Skonfigurowałem zdalny tunel SSH od hosta docelowego do jednego z naszych hostów, który ma statyczny adres IP:

ssh -f -N -g -R :22223:localhost:22 tunnelhost

Kiedy wskazuję SSH na port lokalny 22223na hoście tunelu, tunel działa dobrze. Mój problem polega na tym, że nie wydaje mi się, aby tunel był związany z czymkolwiek innym niż localhost - tzn. Kiedy próbuję SSH zdalnie tunnelhost:12323, nie ma otwartego portu do jego odbioru. Próbowałem też:

ssh -f -N -R :22223:localhost:22 tunnelhost -o GatewayPorts=yes

Ale wciąż nie ma szczęścia. Netstat pokazuje mi:

[me@tunnel_host ~]$ netstat -an | grep 22223
tcp        0      0 127.0.0.1:22223         0.0.0.0:*               LISTEN
tcp6       0      0 ::1:22223               :::*                    LISTEN

Potwierdzenie, że tunel jest powiązany tylko z hostem lokalnym. Dodałem wyjątek portu na hoście tunelu, z firewalld-cmd, i upewniłem się, że żaden sprzęt sieciowy nie zakłóca połączenia. Jakieś pomysły na to, co to może być?

Pozdrawiam, James.

James Paul Turner
źródło

Odpowiedzi:

29

Musisz włączyć GatewayPorts=yesw konfiguracji SSHd ( /etc/ssh/sshd_config), a nie klienta, aby umożliwić powiązanie z interfejsami innymi niż sprzężenie zwrotne na zdalnych portach.

-o GatewayPorts=yes

Działa tylko w przypadku portów lokalnych po przekazaniu do sshpolecenia.

Darth Android
źródło
Darth Android, dziękuję za odpowiedź. Wygląda na to, że masz rację co do -g i -o GatewayPorts działającego tylko dla (-L) tuneli ocal. Dla kompletności, oto trochę więcej informacji na temat tego problemu, na wypadek, gdyby w przyszłości ktoś go spotkał. bugs.debian.org/cgi-bin/bugreport.cgi?bug=228064
James Paul Turner
3
GatewayPorts=clientspecifiedjest nieco bezpieczniejszym ustawieniem, patrz askubuntu.com/questions/50064/reverse-port-tunnelling . W takim przypadku :22223:localhost:2wymagany jest pusty adres powiązania (dwukropek końcowy ).
Michael Goerz
1
Twierdziłbym, że GatewayPorts=clientspecifiedsamo ustawienie nie jest bezpieczniejsze, ale raczej pozwala na większą kontrolę nad tym, które połączenia będą przypisane do znaku wieloznacznego, zamiast po prostu przypisywać je wszystkie do znaku wieloznacznego.
Nick
Ponadto zrestartuj sshd po zmodyfikowaniu sshd_config (na wypadek gdybyś zapomniał)
Nick
⚠️ Należy pamiętać, że GatewayPorts=yesotworzy to przekierowane porty na świat.
ccpizza