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” .
Wprowadzenie
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 connectToHost
oznacza: połącz się z ssh do connectToHost
i przekieruj wszystkie próby połączenia do lokalnego sourcePort
na port onPort
na wywoływanej maszynie forwardToHost
, do którego można dotrzeć z connectToHost
maszyny.
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 connectToHost
oznacza: połącz się z ssh do connectToHost
i przekaż wszystkie próby połączenia do pilota sourcePort
do portu onPort
na 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 host
to komputer z systemem Windows, z którego uruchamiasz Putty na serwerze Ubuntu, wywoływanym remotehost
na moim obrazie. Połączenia z zielonego portu (w Twoim przypadku numer portu 4000
) są przekazywane do różowego portu MySQL 3306
z localhost
Twojego 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.
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.
źródło