ITBlog

IT Blog w tematach różnych...

  • O blogu…
  • Edukacja
    • Moodle – stare
    • Moodle2
    • Testy
    • Wykłady IT
  • Firma

Tunel SSH – zwrotny (remote forwading)

Napisane przez Igor Brzeżek on 11 września 2026
Napisane w: Tunele SSH.

Contents
  1. Tunel zwrotny do hosta źródłowego
  2. Konfiguracja na Windows za pomocą PuTTY
  3. Konfiguracja w konsoli s za pomocą ssh
  4. Tunel zwrotny do hosta innego niż źródłowy

Przypuśćmy, że mamy sieć lokalną umieszczoną za NATem czyli prawie tak jak każdy z nas ma to w domu a zapewne i w miejscu pracy. W takiej konfiguracji z Internetu nie dostaniemy do tejże sieci i jej urządzeń ponieważ tak działa NAT i jest to jest prawidłowa funkcjonalność. Jak się dostać zatem do choć jednego komputera w takiej sieci lokalnej z Internetu (no, może jednak do kilku komputerów)? Rozwiązaniem jest ssh (ang. secure shell) i jego funkcjonalność tunelu zwrotnego.

Tunel zwrotny do hosta źródłowego

W tym przypadku utworzymy tunel zwrotny nazywany wstecznym przekierowaniem (ang. remote forwarding), który pozwoli dostać się ze zdalnego hosta (zdalnej, publicznej sieci) do naszego hosta lokalnego (źródłowego, który jest za NAT np. w sieci lokalnego dostawcy; na ilustracji to maszyna PC). W tym wypadku musimy dysponować hostem w sieci zdalnej, na którym działa SSH i gdzie mamy konto. Może to być Linux, RouterOS, Windows czy inny system. Schemat taki:

Konfiguracja na Windows za pomocą PuTTY

Ustawiamy adres zdalnego hosta:

W sekcji Connection/SSH/Tunnels ustawiamy porty (i klikamy Add aby je dodać przed połączeniem):

Konfiguracja w konsoli s za pomocą ssh

Pracując na PC (host źródłowy) wydamy następujące polecenie celem zestawienia tunelu:

# ssh admin@83.10.20.30 -R 10000:127.0.0.1:3389
lub
# ssh admin@83.10.20.30 -R 10000:localhost:3389

Elementy polecenia:

  • admin@83.10.20.30 to połączenie ssh do zdalnego hosta
  • -R 10000 otwiera nasłuchujący port na zdalnym hoście na jego interfejsie pętli zwrotnej 127.0.0.1 i porcie 10000
  • 127.0.0.1:3389 to jest docelowe gniazdo (z perspektywy hosta zdalnego) na naszym hoście źródłowym (maszyna PC)

Wszystko co wpadnie do 127.0.0.1:10000 na hoście zdalnym jest kierowane do hosta PC na gniazdo 127.0.0.1:3389. Oczywiście na tym gnieździe coś musi nasłuchiwać, a może to być dowolna usługa.

Domyślnie na zdalnym hoście port nasłuchujący jest zawsze tworzony na interfejsie 127.0.0.1. Jeśli na zdalnym hoście chcesz uruchomić nasłuchiwanie na innym interfejsie czy adresie to trzeba zmienić dwie opcje:

  • podać inny adres: ssh admin@83.10.20.30 -R retmote_ip:10000:127.0.0.1:3389
  • włączyć na zdalnym hoście opcje 'AllowTcpForwarding yes’ (domyślnie właczona)
  • włączyć na zdalnym hoście przekierowanie takiego ruchu zmieniając opcję 'GatewayPorts’ na 'yes’ w pliku /etc/ssh/sshd_config (trzeba przeładować ssh: 'systemctl reload ssh’)

Adres remote_ip to najczęściej 0.0.0.0 jeśli chcesz aby usługa lokalna (ta na maszynie źródłowej) była dostępna dla wszystkich hostów mających dostęp do maszyny zdalnej. Jak usługa ta ma być dostępna tylko 'wewnątrz’ zdalnego hosta to zmień 'GatewayPorts’ na 'no’.

Kolejno na hoście zdalnym (tym w Internecie) można wykonać połączenie RDP (za pomocą np. programu mstsc) do adresu 127.0.0.1 na port 10000. Cały ruch zostanie przekierowany szyfrowanym tunelem do hosta PC na jego wewnętrzny adres 127.0.0.1 i port 3389 (czyli standardowy port RDP). Co ważne, ten host jest za NAT i gdybyśmy tego tuneli nie mieli to trzeba błagać administratora NATa aby dokonał przekierowania portu. Administrator może powiedzieć 'nie’ i wtedy mamy problem bo do PC się nie dostaniemy.

Tunel zwrotny do hosta innego niż źródłowy

Tutaj mamy bardziej złożony przypadek: chcemy uruchomić połącznie zwrotne przez PC1 ale do innego komputera w jego sieci czyli do PC2.

Program ssh też na na to pozwoli tylko teraz musimy także i na hoście źródłowym włączyć dwie opcje w SSH:

  • włączyć na zdalnym hoście opcje 'AllowTcpForwarding yes’ (domyślnie właczona)
  • włączyć na zdalnym hoście przekierowanie takiego ruchu zmieniając opcję 'GatewayPorts’ na 'yes’ w pliku /etc/ssh/sshd_config (trzeba przeładować ssh: 'systemctl reload ssh’)

Teraz można już na hoście źródłowym (PC1) wydać polecenie:

# ssh admin@83.10.20.30 -R 10000:192.168.0.101:3389

Interpretacja będzie taka: z hosta PC1 (sieć lokalna) zaloguj się przez ssh do 80.10.20.30. Tam na interfejsie localhost uruchom nasłuchiwanie na porcie 10000. Wszystko co wpada do tego portu leci do PC1 (przez tunel ssh) a kolejno PC1 prześle to do PC2 na jego adres 192.168.0.101 i na port 3389.

Teraz mała uwaga: jeśli zmienimy naszą sieć lokalną na taką:

To komputer PC1 można nazwać hostem bastionowym. Polecenie będzie identyczne.

Zawsze pamiętaj o opcji 'GatewayPorts’ – jeśli jest ustawiona na 'yes’ to na takim hoście ssh przypisze porty nasłuchujące do adresu 0.0.0.0 czyli do wszystkich adresów! To oznacza, że każdy host w sieci będzie mógł połączyć się z Twoim zdalnym hostem przez tunel ssh. Dla bezpieczeństwa zawsze warto sprawdzić ta opcje oraz sprawdzić jak jest port przypisany:

Powyższy opis to tylko fragment tematu i możliwości jakie ma ssh. Świetny opis zagadnienia znajdziesz tutaj.

 

 

Nawigacja

← GNS3 – Interfejsy sieciowe
Opencode – darmowe kredyty →
  • Szukaj

  • Kategorie

    • IT ogólnie (163)
      • AI (3)
      • Bezpieczeństwo (19)
        • Model AAA (7)
        • Szyfrowanie (1)
      • CCTV (3)
      • Hardware (2)
      • Podstawy informatyki (1)
      • Sieci (50)
        • Cisco (4)
          • Obsługa haseł (2)
        • MikroTik (8)
        • Monitorowanie sieci (6)
        • Pomiary w sieciach LAN (6)
          • iptraf-ng (3)
        • Protokół ARP (5)
        • Symulator sieci GNS3 (5)
        • Tunelowanie ruchu (6)
          • Tunele GRE (2)
          • Tunele SSH (4)
        • WLAN / WiFi (7)
      • Software (78)
        • Bazy danych (13)
        • Programowanie (21)
        • Systemy operacyjne (21)
          • Linux Debian (18)
        • Windows (8)
      • Wirtualizacja (26)
  • Ostatnie wpisy

    • Pomiary prędkości
    • SNMP-Exporter, Prometheus, Grafana + MikroTik
    • Monitorowanie sieci LAN za pomocą SNMP
    • Lokalny model Bielik dla Ollama
    • Hermes agent
  • Strona odwiedzona

    od 11.01.2013

  • Doskonała platforma e-learningowa Uzyskaj certyfikat IT

Proudly powered by WordPress Theme: Parament by Automattic.
7ads6x98y

Powered by
Necessary cookies enable essential site features like secure log-ins and consent preference adjustments. They do not store personal data.
None
Functional cookies support features like content sharing on social media, collecting feedback, and enabling third-party tools.
None
Analytical cookies track visitor interactions, providing insights on metrics like visitor count, bounce rate, and traffic sources.
None
Advertisement cookies deliver personalized ads based on your previous visits and analyze the effectiveness of ad campaigns.
None
Unclassified cookies are cookies that we are in the process of classifying, together with the providers of individual cookies.
None
Powered by