Wyszukiwanie w witrynie

Jak utworzyć tunelowanie SSH lub przekierowanie portów w systemie Linux


Tunelowanie SSH (nazywane także przekierowaniem portów SSH) polega po prostu na kierowaniu ruchu w sieci lokalnej przez SSH do zdalnych hostów. Oznacza to, że wszystkie Twoje połączenia są zabezpieczone za pomocą szyfrowania. Zapewnia łatwy sposób konfiguracji podstawowej VPN (wirtualnej sieci prywatnej), przydatnej do łączenia się z sieciami prywatnymi za pośrednictwem niezabezpieczonych sieci publicznych, takich jak Internet.

Możesz także zostać użyty do odsłonięcia lokalnych serwerów za NAT i zaporami ogniowymi w Internecie przez bezpieczne tunele, zgodnie z implementacją w ngrok.

Sesje SSH domyślnie umożliwiają tunelowanie połączeń sieciowych i istnieją trzy typy przekierowania portów SSH: lokalne, zdalne i dynamiczne przekierowanie portów.

W tym artykule pokażemy, jak szybko i łatwo skonfigurować tunelowanie SSH lub różne typy przekierowania portów w systemie Linux.

Środowisko testowe:

Na potrzeby tego artykułu używamy następującej konfiguracji:

  1. Host lokalny: 192.168.43.31
  2. Zdalny host: Linode CentOS 7 VPS z nazwą hosta serwer1.example.com.

Zwykle można bezpiecznie połączyć się ze zdalnym serwerem za pomocą protokołu SSH w następujący sposób. W tym przykładzie skonfigurowałem logowanie SSH bez hasła między moimi hostami lokalnymi i zdalnymi, więc nie pytało o hasło administratora użytkownika.

ssh [email   

Lokalne przekierowanie portów SSH

Ten typ przekierowania portów umożliwia połączenie komputera lokalnego z serwerem zdalnym. Zakładając, że znajdujesz się za restrykcyjną zaporą ogniową lub blokujesz przez zaporę wychodzącą dostęp do aplikacji działającej na porcie 3000 na serwerze zdalnym.

Możesz przekierować port lokalny (np. 8080), którego możesz następnie użyć do lokalnego dostępu do aplikacji w następujący sposób. Flaga -L definiuje port przekazywany do zdalnego hosta i portu zdalnego.

ssh [email  -L 8080:server1.example.com:3000

Dodanie flagi -N oznacza, że nie wykonujesz zdalnego polecenia, w tym przypadku nie otrzymasz powłoki.

ssh -N [email  -L 8080:server1.example.com:3000

Przełącznik -f instruuje ssh, aby działał w tle.

ssh -f -N [email  -L 8080:server1.example.com:3000

Teraz na komputerze lokalnym otwórz przeglądarkę i zamiast uzyskiwać dostęp do aplikacji zdalnej przy użyciu adresu serwer1.example.com:3000, możesz po prostu użyć localhost:8080 lub 192.168.43.31:8080, jak pokazano na zrzucie ekranu poniżej.

Zdalne przekazywanie portów SSH

Zdalne przekierowanie portów umożliwia połączenie komputera zdalnego z komputerem lokalnym. Domyślnie protokół SSH nie pozwala na zdalne przekierowywanie portów. Możesz to włączyć za pomocą dyrektywy GatewayPorts w głównym pliku konfiguracyjnym SSHD /etc/ssh/sshd_config na zdalnym hoście.

Otwórz plik do edycji za pomocą ulubionego edytora wiersza poleceń.

sudo vim /etc/ssh/sshd_config 

Poszukaj wymaganej dyrektywy, odkomentuj ją i ustaw jej wartość na yes, jak pokazano na zrzucie ekranu.

GatewayPorts yes

Zapisz zmiany i wyjdź. Następnie musisz ponownie uruchomić sshd, aby zastosować ostatnią dokonaną zmianę.

sudo systemctl restart sshd
OR
sudo service sshd restart 

Następnie uruchom następujące polecenie, aby przekierować port 5000 na komputerze zdalnym do portu 3000 na komputerze lokalnym.

ssh -f -N [email  -R 5000:localhost:3000

Gdy zrozumiesz tę metodę tunelowania, możesz łatwo i bezpiecznie udostępnić lokalny serwer programistyczny, szczególnie za NAT i zaporami sieciowymi, aby połączyć się z Internetem za pośrednictwem bezpiecznych tuneli. Tunele takie jak Ngrok, pagekite, localtunnel i wiele innych działają w podobny sposób.

Dynamiczne przekazywanie portów SSH

To trzeci rodzaj przekierowania portów. W przeciwieństwie do lokalnego i zdalnego przekierowania portów, które umożliwia komunikację z jednym portem, umożliwia ono pełny zakres komunikacji TCP na wielu portach. Dynamiczne przekierowanie portów konfiguruje Twój komputer jako serwer proxy SOCKS, który domyślnie nasłuchuje na porcie 1080.

Na początek SOCKS to protokół internetowy, który definiuje, w jaki sposób klient może połączyć się z serwerem za pośrednictwem serwera proxy (w tym przypadku SSH). Możesz włączyć dynamiczne przekierowanie portów za pomocą opcji -D.

Poniższe polecenie uruchomi serwer proxy SOCKS na porcie 1080, umożliwiając połączenie się ze zdalnym hostem.

ssh -f -N -D 1080 [email 

Odtąd możesz sprawić, aby aplikacje na Twoim komputerze korzystały z tego serwera proxy SSH, edytując ich ustawienia i konfigurując je tak, aby z niego korzystały w celu łączenia się z Twoim zdalnym serwerem. Pamiętaj, że serwer proxy SOCKS przestanie działać po zamknięciu sesji SSH.

Przeczytaj także: 5 sposobów na utrzymanie zdalnych sesji SSH po zamknięciu SSH

Streszczenie

W tym artykule wyjaśniliśmy różne typy przekierowań portów z jednej maszyny na drugą w celu tunelowania ruchu przez bezpieczne połączenie SSH. Jest to jedno z bardzo wielu zastosowań protokołu SSH. Możesz dodać swój głos do tego przewodnika, korzystając z poniższego formularza opinii.

Uwaga: Przekierowanie portów SSH ma kilka istotnych wad, może zostać nadużyte: może zostać wykorzystane do ominięcia programów monitorujących sieć i filtrujących ruch (lub firewalli). Osoby atakujące mogą go wykorzystać do szkodliwych działań. W następnym artykule pokażemy, jak wyłączyć przekierowanie portów lokalnych SSH. Pozostawanie w kontakcie!