Jak tunelować port lokalny na zdalnym serwerze


4

Mam domenę, którą kupiłem od DynDNS. Wskazałem domenę na mój adres IP, aby móc uruchomić serwery. Problem polega na tym, że nie mieszkam w pobliżu serwera ... Czy mogę użyć tunelu SSH? Jak rozumiem, pozwoli mi to uzyskać dostęp do moich serwerów. Chcę, aby komputer zdalny kierował ruchem z portu 8080 przez tunel ssh do klienta ssh, będącego portem 80 mojego laptopa. Czy to możliwe?

Odpowiedzi:


7

Jest to w rzeczywistości dość łatwe do osiągnięcia, nawet jeśli jest nieco zakopane w dokumentacji ssh. Zakładając OpenSSH, podstawowa składnia jest następująca:

ssh -R 8080:localhost:80 -N username@your-server.dyndns.org

Spowoduje to otwarcie gniazda nasłuchującego na porcie 8080 twojego-server.dyndns.org, a wszelkie wykonane połączenia your-server.dyndns.org:8080zostaną przekazane przez tunel SSH do komputera, który otworzył to połączenie SSH, i stamtąd zostanie przekierowane na localhost:80.

Ta -Nopcja instruuje SSH, aby nie otwierał powłoki ani nic takiego, tylko w celu ustanowienia przekierowania portów, abyś mógł wysłać go w tle i pozostawić uruchomiony.

Putty używa prawie tej samej składni, ale jest zawinięty w jakiś GUI. Zasada jest jednak taka sama.

Ale bądź ostrożny w tym, co robisz. Ponieważ zasadniczo kierujesz ruch zewnętrzny do sieci, naciskasz dziurę w zaporze sieciowej. Jeśli nie jest to twoja sieć, administrator może sprzeciwić się temu i pociągnąć cię do odpowiedzialności - zazwyczaj istnieje powód, dla którego nie możesz zezwolić na określony rodzaj ruchu.


1
nie, to tylko moja domowa sieć, ale używam ssh na komputerze Mac, co myślę, że jest wcieleniem kodu openssh, ale przejście do mysite.com:8080 daje błąd nieistniejącego serwera, sprawdzam za pomocą telnet i nic nie mówi
Trevor Rudolph

ale właśnie sprawdziłem na zdalnym komputerze i jest to napisane:tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 0 14875755 -
Trevor Rudolph

Jak dokładnie wygląda twój wiersz poleceń? Ta localhost:80część jest tutaj kluczowa - musi istnieć z punktu widzenia komputera lokalnego, a nie zdalnego, w przeciwnym razie wystąpią błędy jak wyżej.
Vucar Timnärakrul,

tak, napisałem zamiast tego w 127.0.0.1, źle spróbuję localhost ...
Trevor Rudolph

1
Wygląda na to, że strona zdalna wiąże się tylko z hostem lokalnym, a nie ze wszystkimi interfejsami. Spróbuj to zrobić w ten sposób: ssh -R *:8080:localhost:80 -N ...w ten sposób każesz mu nasłuchiwać na porcie 8080 na wszystkich dostępnych interfejsach sieciowych. Powyższa linia działała na moim komputerze, ale może wersja ssh na Maca działa nieco inaczej.
Vucar Timnärakrul,

2

Aby móc przekazanych przez lokalnego portu 80 nie tylko do interfejsu pętli zwrotnej (127.0.0.1), należy skonfigurować GatewayPorts clientspecifiedw /etc/ssh/sshd_configna zdalnej maszynie pierwszy.

Następnie przekaż swój port za pomocą:

ssh -R 0.0.0.0:8080:localhost:80 -N foo@bar.dyndns.org
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.