Zrozumienie tuneli SSH


15

Mam serwer linux (Ubuntu), do którego mam dostęp root tylko poprzez ssh (port 22). Na tym serwerze znajduje się baza danych MySQL nasłuchująca na porcie 3306. Czy można użyć putty (na mojej maszynie) i tunelowania (na maszynie linux), aby utworzyć tunel z portu lokalnego na mojej maszynie (powiedzmy 4000), do serwer linux na porcie 22, a następnie z serwera do siebie na porcie 3306?

Odpowiedzi:


20

Narysowałem kilka szkiców

Maszyna, na której wpisane jest polecenie ssh tunel (lub w twoim przypadku: Uruchomiona jest szpachla z tunelowaniem) nazywa się „twoim hostem” .

tunel ssh zaczynający się od lokalnego


tunel ssh zaczynający się zdalnie

Wprowadzenie

  1. lokalny: -L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.

    ssh -L sourcePort:forwardToHost:onPort connectToHostoznacza: połącz się z ssh do connectToHosti przekieruj wszystkie próby połączenia do lokalnego sourcePort na port onPortna wywoływanej maszynie forwardToHost, do którego można dotrzeć z connectToHostmaszyny.

  2. zdalny: -R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.

    ssh -R sourcePort:forwardToHost:onPort connectToHostoznacza: połącz się z ssh do connectToHosti przekaż wszystkie próby połączenia do pilota sourcePort do portu onPortna wywoływanym komputerze forwardToHost, do którego można dotrzeć z twojego komputera lokalnego.

Twój przykład

Pierwszy obraz przedstawia twoją sytuację. Niebieskie pole o nazwie your hostto komputer z systemem Windows, z którego uruchamiasz Putty na serwerze Ubuntu, wywoływanym remotehostna moim obrazie. Połączenia z zielonego portu (w Twoim przypadku numer portu 4000) są przekazywane do różowego portu MySQL 3306z localhostTwojego urządzenia Ubuntu Server (czyli samego serwera Ubuntu).

Aby skonfigurować z Putty

Uruchom Putty i wprowadź swoje zwykłe ustawienia połączenia (nazwa hosta lub adres IP). W drzewie po lewej stronie przejdź do

Połączenie → SSH → Tunele

i utwórz nowy tunel lokalny z portem źródłowym 4000(123 na obrazie) i docelowym localhost:3306(localhost: 456 na obrazie).

Nie zapomnij kliknąć Dodaj .

Następnie wróć do sesji i kliknij Zapisz, aby zachować ustawienia na następny raz. Teraz możesz użyć zapisanego połączenia do zalogowania się na serwerze, a po pomyślnym zalogowaniu się, za każdym razem, gdy łączysz się z portem 4000 na hoście, faktycznie łączysz się z portem 3306 na serwerze Ubuntu.

stwórz tunel do przodu z kitem


Bardzo dobrze, dziękuję za ilustrację. Rozumiem, że dodałeś tunele typu „zdalnego”, których nie omawiałem w swoich anwersach.
Guss,

1
Ta odpowiedź jest niesamowita
Mauricio Pasquier Juan

2
Niesamowita i bardzo ilustrująca odpowiedź +1
rkachach

1
Wstyd, że ma tak mało głosów.
Ryan Fisher

1
Uwielbiam te szkice. Obraz jest wart tysiąca słów.
kwartał 12.12.17

16

Prosta odpowiedź brzmi „tak”, ale należy pamiętać, że tunel jest faktycznie uruchamiany na komputerze. Działa to tak, że tworzysz połączenie SSH z serwerem (które jest bezpieczne), a następnie instruujesz SSH, aby nasłuchiwał portu po twojej stronie i przekazywał wszelkie przychodzące połączenia - do określonego portu pod określonym adresem hosta na po stronie serwera. Celem tunelu nie musi być ten sam serwer - może to być dowolny inny prawidłowy adres, który - w przypadku, gdy nie jest to serwer z samym serwerem SSH - zobaczy połączenie przychodzące tak, jakby pochodziło z serwera SSH zamiast od twojego klienta.

Aby to skonfigurować, otwórz okno konfiguracji Putty, wybierz ustawienie połączenia, którego zwykle używasz do uzyskania dostępu do serwera i kliknij „załaduj” (a nie „otwórz”). Następnie w drzewie po lewej stronie przejdź do Połączenia-> SSH-> Tunele i utwórz nowy „lokalny” tunel z portem źródłowym 4000 i docelowym „localhost: 3306” (ponieważ adres docelowy jest rozpoznany na serwerze, z punktu widzenia serwera port MySQL znajduje się na hoście lokalnym). Następnie wróć do „sesji” i kliknij „Zapisz”, aby zachować ustawienia na następny raz. Teraz możesz użyć zapisanego połączenia do zalogowania się na serwerze, a po pomyślnym zalogowaniu się, za każdym razem, gdy łączysz się z portem 4000 na twoim komputerze, faktycznie łączysz się z portem 3306 na serwerze.

Jeśli poważnie interesujesz się tunelami i korzystasz z klienta MS-Windows, proponuję spojrzeć na Putty Tunnel Manager który używa Putty do łatwego konfigurowania i uruchamiania tuneli bez potrzeby posiadania otwartej konsoli.

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.