Android

Jak skonfigurować tunelowanie ssh (przekierowanie portów)

how to setup ssh tunel (port forwording) in linux using sshreahme

how to setup ssh tunel (port forwording) in linux using sshreahme

Spisu treści:

Anonim

Tunelowanie SSH lub przekierowywanie portów SSH to metoda tworzenia szyfrowanego połączenia SSH między klientem a maszyną serwerową, za pośrednictwem której można przekazywać porty usług.

Przekazywanie SSH jest przydatne do przesyłania danych sieciowych usług wykorzystujących niezaszyfrowany protokół, takich jak VNC lub FTP, uzyskiwania dostępu do treści ograniczonych geograficznie lub omijania pośrednich zapór ogniowych. Zasadniczo możesz przekazać dowolny port TCP i tunelować ruch przez bezpieczne połączenie SSH.

Istnieją trzy typy przekierowania portów SSH:

  • Lokalne przekierowanie portów. - Przekazuje połączenie z hosta klienta do hosta serwera SSH, a następnie do docelowego portu hosta. - Przesyła port z hosta serwera do hosta klienta, a następnie do docelowego portu hosta. Dynamiczne przekazywanie portów. - Tworzy serwer proxy SOCKS, który umożliwia komunikację przez szereg portów.

, porozmawiamy o tym, jak skonfigurować lokalne, zdalne i dynamicznie szyfrowane tunele SSH.

Lokalne przekierowanie portów

Lokalne przekierowanie portów umożliwia przekierowanie portu na lokalnym komputerze (kliencie ssh) do portu na zdalnym komputerze (serwerze ssh), który jest następnie przekierowywany do portu na komputerze docelowym.

W tego rodzaju przekazywaniu klient SSH nasłuchuje na danym porcie i tuneluje każde połączenie z tym portem do określonego portu na zdalnym serwerze SSH, który następnie łączy się z portem na komputerze docelowym. Komputer docelowy może być zdalnym serwerem SSH lub dowolnym innym komputerem.

Lokalne przekierowanie portów jest najczęściej używane do łączenia się ze zdalną usługą w sieci wewnętrznej, takiej jak baza danych lub serwer VNC.

W systemie Linux, macOS i innych systemach Unix w celu utworzenia lokalnego przekierowania portów przekaż opcję -L do klienta ssh :

ssh -L LOCAL_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

Dostępne opcje są następujące:

  • LOCAL_PORT - numer IP i numer portu lokalnego komputera. Po LOCAL_IP klient ssh łączy się z LOCAL_IP lokalnym. DESTINATION:DESTINATION_PORT - adres IP lub nazwa hosta i port komputera docelowego. SERVER_IP - zdalny użytkownik SSH i adres IP serwera.

Możesz użyć dowolnego numeru portu większego niż 1024 jako LOCAL_PORT . Porty o numerach mniejszych niż 1024 są portami uprzywilejowanymi i mogą być używane tylko przez root. Jeśli serwer SSH nasłuchuje na porcie innym niż 22 (domyślnie), użyj opcji -p .

Docelowa nazwa hosta musi być rozpoznawalna z serwera SSH.

Załóżmy, że masz serwer bazy danych MySQL uruchomiony na komputerze db001.host w sieci wewnętrznej (prywatnej), na porcie 3306, który jest dostępny z komputera pub001.host i chcesz połączyć się za pomocą lokalnego klienta mysql z serwerem bazy danych. Aby to zrobić, możesz przekazać połączenie w następujący sposób:

ssh -L 3336:db001.host:3306 [email protected]

Po uruchomieniu polecenia pojawi się monit o wprowadzenie hasła użytkownika zdalnego SSH. Po wejściu do niego zostaniesz zalogowany na zdalnym serwerze i zostanie utworzony tunel SSH. Dobrym pomysłem jest skonfigurowanie uwierzytelniania opartego na kluczu SSH i połączenie się z serwerem bez podawania hasła.

Teraz, jeśli db001.host:3306 klientowi bazy danych komputera lokalnego na 127.0.0.1:3336 , połączenie zostanie przesłane do serwera MySQL db001.host:3306 za pub001.host komputera pub001.host , który będzie działał jako serwer pośredni.

Możesz przekazać wiele portów do wielu miejsc docelowych za pomocą jednego polecenia ssh. Na przykład masz inny serwer bazy danych MySQL uruchomiony na komputerze db002.host i chcesz połączyć się z obydwoma serwerami za pomocą klienta lokalnego, który uruchomisz:

ssh -L 3336:db001.host:3306 3337:db002.host:3306 [email protected]

Aby połączyć się z drugim serwerem, użyj 127.0.0.1:3337 .

Jeśli host docelowy jest taki sam jak serwer SSH, zamiast określać adres IP hosta docelowego lub nazwę hosta, możesz użyć localhost .

Powiedz, że musisz połączyć się ze zdalną maszyną za pośrednictwem VNC, który działa na tym samym serwerze i nie jest dostępny z zewnątrz. Polecenie, którego użyjesz to:

ssh -L 5901:127.0.0.1:5901 -N -f [email protected]

Opcja -f informuje komendę ssh aby działała w tle, a opcja -N nie wykonywała komendy zdalnej. Używamy localhost ponieważ VNC i serwer SSH działają na tym samym hoście.

Zdalne przekierowanie portów

Zdalne przekierowanie portów jest przeciwieństwem lokalnego przekierowania portów. Umożliwia przekierowanie portu na zdalnym komputerze (serwerze ssh) do portu na komputerze lokalnym (kliencie ssh), który jest następnie przesyłany do portu na komputerze docelowym.

W przypadku tego typu przekazywania serwer SSH nasłuchuje na danym porcie i tuneluje każde połączenie z tym portem do określonego portu na lokalnym kliencie SSH, który następnie łączy się z portem na komputerze docelowym. Komputer docelowy może być komputerem lokalnym lub dowolnym innym.

W systemie Linux, macOS i innych systemach Unix, aby utworzyć zdalne przekierowanie portów, przekaż opcję -R do klienta ssh :

ssh -R REMOTE_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

Dostępne opcje są następujące:

  • REMOTE_PORT - adres IP i numer portu na zdalnym serwerze SSH. Pusty REMOTE oznacza, że ​​zdalny serwer SSH będzie się wiązał na wszystkich interfejsach. DESTINATION:DESTINATION_PORT - adres IP lub nazwa hosta i port komputera docelowego. SERVER_IP - zdalny użytkownik SSH i adres IP serwera.

Lokalne przekierowanie portów jest najczęściej używane do zapewnienia dostępu do usługi wewnętrznej komuś z zewnątrz.

Załóżmy, że tworzysz aplikację internetową na komputerze lokalnym i chcesz pokazać podgląd programistom. Nie masz publicznego adresu IP, więc inny programista nie może uzyskać dostępu do aplikacji przez Internet.

ssh -L 8080:127.0.0.1:3000 -N -f [email protected]

Powyższe polecenie spowoduje, że serwer ssh będzie nasłuchiwał na porcie 8080 i tunelował cały ruch z tego portu do komputera lokalnego na porcie 3000 .

Teraz twój inny programista może wpisać w swojej przeglądarce the_ssh_server_ip:8080 i wyświetlić podgląd swojej niesamowitej aplikacji.

Dynamiczne przekierowywanie portów

Dynamiczne przekierowywanie portów umożliwia utworzenie gniazda na komputerze lokalnym (kliencie ssh), który działa jak serwer proxy SOCKS. Gdy klient łączy się z tym portem, połączenie jest przekazywane do zdalnego komputera (serwera ssh), który jest następnie przesyłany do dynamicznego portu na komputerze docelowym.

W ten sposób wszystkie aplikacje korzystające z serwera proxy SOCKS połączą się z serwerem SSH, a serwer przekaże cały ruch do miejsca docelowego.

W systemie Linux, macOS i innych systemach uniksowych w celu utworzenia dynamicznego przekierowania portów (SOCKS) przekaż opcję -D klientowi ssh :

ssh -D LOCAL_PORT SSH_SERVER

Dostępne opcje są następujące:

  • LOCAL_PORT - numer IP i numer portu lokalnego komputera. Po LOCAL_IP klient ssh łączy się z LOCAL_IP lokalnym. SERVER_IP - zdalny użytkownik SSH i adres IP serwera.

Typowym przykładem dynamicznego przekierowywania portów jest tunelowanie ruchu przeglądarki internetowej przez serwer SSH.

Następujące polecenie utworzy tunel SOCKS na porcie 9090 :

ssh -D 9090 -N -f [email protected]

Po ustanowieniu tunelowania możesz skonfigurować aplikację, aby z niego korzystała. W tym artykule wyjaśniono, jak skonfigurować przeglądarki Firefox i Google Chrome, aby korzystały z serwera proxy SOCKS.

Przekierowanie portów musi być skonfigurowane osobno dla każdej aplikacji, która ma tunelować ruch.

Skonfiguruj tunelowanie SSH w systemie Windows

Użytkownicy systemu Windows mogą tworzyć tunele SSH za pomocą klienta PuTTY SSH. Możesz pobrać PuTTY tutaj.

  1. Uruchom Putty i wprowadź adres IP serwera SSH w polu Host name (or IP address) .

    Pojawi się nowe okno z prośbą o podanie nazwy użytkownika i hasła. Po wprowadzeniu nazwy użytkownika i hasła nastąpi zalogowanie na serwerze i uruchomienie tunelu SSH.

    Skonfigurowanie uwierzytelniania za pomocą klucza publicznego pozwoli ci połączyć się z serwerem bez podawania hasła.

Wniosek

Pokazaliśmy, jak skonfigurować tunele SSH i przekazywać ruch przez bezpieczne połączenie SSH. Dla ułatwienia możesz zdefiniować tunel SSH w pliku konfiguracyjnym SSH lub utworzyć alias Bash, który skonfiguruje tunel SSH.

bezpieczeństwo ssh