Tunel SSH na wielu chmielach za pomocą szpachli

13

Mam sytuację, w której chcę połączyć się z maszyną z systemem Linux, na której działa VNC (nazwijmy to VNCServer), która stoi za dwoma kolejnymi maszynami z systemem Linux, tj. Aby ssh do VNCServer, muszę ssh do Gateway1 z mojego laptopa, a następnie z powłoki Gateway1 I ssh do Gateway2, a następnie z tej powłoki w końcu ssh do VNCServer. Nie mogę zmienić projektu sieci i przepływu dostępu Laptop -> Brama 1 -> Brama 2 -> Serwer. Nie mam uprawnień roota na Gateway1 i wszystkie porty oprócz 22 i 5901 są zamknięte.

Czy istnieje sposób, w jaki mogę uruchomić przeglądarkę VNC na moim laptopie i uzyskać dostęp do VNCServer? Rozumiem, że można to zrobić za pomocą funkcji tunelowania ssh i mam kit na moim laptopie z systemem Windows (przepraszam, nie można zainstalować Linuksa ani Cygwin itp. Na laptopie roboczym). Każda pomoc będzie mile widziana, ponieważ ułatwiłoby mi to życie!

xkcd
źródło

Odpowiedzi:

19

Putty obsługuje tunele ssh, jeśli rozwiniesz drzewo Connection, SSH, zobaczysz pozycję dla tuneli.

Lokalne tunele wytwarzają port hosta lokalnego na komputerze z systemem Windows, który przekazuje dane do adresu IP i portu, który określisz. Na przykład, gdy próbuję połączyć się z RDP na pulpicie w moim domu, zazwyczaj wybieram losowy port lokalny, taki jak 7789, a następnie umieszczam lokalny adres IP pulpitu (1.2.3.4:3389) jako zdalny gospodarz. Pamiętaj, aby kliknąć „Dodaj”, a następnie „Zastosuj”. W tym momencie, kiedy uruchomisz rdp do 127.0.0.1:7789, wtedy połączysz się z 1.2.3.4:3389 za pośrednictwem sesji putty.

W tym miejscu pojawia się zabawa. Jeśli następnie skonfigurujesz tunel portowy na pośrednim boksie, ustawiając port lokalny określony jako port zdalny w kitie, możesz następnie odbić się przez kit, przez pośredni box do końcowego miejsca docelowego. Nadal będziesz musiał wykonać kilka połączeń ssh, ale po skonfigurowaniu będziesz mógł przejść przez VNC lub RDP bezpośrednio z systemu Windows, co moim zdaniem chcesz zrobić.

PRZYKŁAD

  1. Udaj się do panelu tuneli w Putty (Połączenia-> SSH-> Tunele dostępne albo z menu kontekstowego, jeśli sesja ssh jest już aktywna, albo na ekranie początkowego połączenia, gdy dopiero zaczynasz kit)
  2. Utwórz tunel z lokalnym źródłem 15900 i zdalnym źródłem 127.0.0.1:15900
  3. Połącz (jeśli nie jest jeszcze połączony) z Bramą 1.
  4. Na Gateway1, ssh -L 127.0.0.1:15900:VNCServerIP:5900 użytkownik @ Gateway2
  5. Gdy ssh do Gateway2 się uruchomi, spróbuj vnc do 127.0.0.1:15900 - powinieneś teraz zobaczyć ekran VNC po drugiej stronie!

DODATKOWY BONUS - niewiele osób wie o tym, ale proces ten można również wykorzystać do proxy ruchu IPv6 / IPv4. SSH nie przejmuje się tym, jakiego protokołu używa dla tuneli, więc teoretycznie możesz uzyskać dostęp do hostów tylko IPv6 z systemu tylko IPv4, biorąc pod uwagę, że serwer ssh ma dwa stosy (ma zarówno adresy IPv4, jak i IPv6).

Peter Grace
źródło
15

Istnieje alternatywa, jeśli chcesz używać PuTTY dla obu chmielu. W tym przykładzie przeskakujemy z Bramy 1 (10.0.1.123) do Bramy 2 (10.0.1.456) do portu 80 na 10.0.1.789.

  1. Najpierw utwórz przeskok do bramki nr 1. Najpierw skonfiguruj połączenie z pierwszym serwerem. Skonfiguruj tunel do drugiej bramy w Połączenia> SSH> Tunele. W tym przykładzie przekierowujemy port 2222 do drugiej bramy.

    połączyć się z servert

    założyć tunel

  2. Teraz skonfigurujemy drugi przeskok. Przejdziemy przez pierwszą bramę do następnej bramy i skonfigurujemy przekierowanie portów na drugiej bramie. Połączenie jest z hostem lokalnym na porcie 2222. Spowoduje to tunelowanie przez działające połączenie ssh do drugiego przeskoku. Przy tym połączeniu konfigurujemy port przekierowania z portu 3333 na 10.0.1.789.

    wprowadź opis zdjęcia tutaj

    wprowadź opis zdjęcia tutaj

  3. Teraz otwórz przeglądarkę i przejdź do 127.0.0.1:3333, a będziesz tunelować przez dwa połączenia SSH do 10.0.1.789:80

Scott
źródło
1
Czy istnieje sposób na osiągnięcie tego samego za pomocą jednej sesji szpachli z dwoma tunelami skonfigurowanymi w menu SSH -> Tunele? W ten sposób wystarczy otworzyć tylko jedną instancję kitu?
ulrich