Wéi erstellen ech SSH Tunneling oder Port Forwarding a Linux


SSH Tunneling (och als SSH Port Forwarding bezeechent) routing einfach de lokalen Netzwierkverkéier duerch SSH op Fernhoster. Dëst implizéiert datt all Är Verbindunge mat Verschlësselung geséchert sinn. Et bitt en einfache Wee fir e Basis VPN (Virtual Private Network) opzestellen, nëtzlech fir mat privaten Netzwierker iwwer onsécher ëffentlech Netzwierker wéi den Internet ze verbannen.

Dir kënnt och benotzt ginn fir lokal Serveren hannert NATs a Firewalls op den Internet iwwer sécher Tunnel auszesetzen, wéi am ngrok ëmgesat.

[Dir kënnt och gären hunn: Wéi sécheren an Harden OpenSSH Server]

SSH Sessiounen erlaben tunneling Netzwierkverbindungen als Standard an et ginn dräi Aarte vu SSH Port Forwarding: lokal, Remote an dynamesch Port Forwarding.

An dësem Artikel wäerte mir weisen wéi séier an einfach SSH Tunneling oder déi verschidden Aarte vu Port Forwarding a Linux opzestellen.

Fir den Zweck vun dësem Artikel benotze mir de folgende Setup:

  1. Lokale Host: 192.168.43.31
  2. Fernhost: Linode CentOS 7 VPS mat Hostnumm server1.example.com.

Normalerweis kënnt Dir sécher mat engem Fernserver verbannen mat SSH wéi follegt. An dësem Beispill hunn ech Passwuertlos SSH Login tëscht menge lokalen a Remote Hosten konfiguréiert, sou datt et net de Benotzer Admin Passwuert gefrot huet.

$ ssh [email   

Lokal SSH Port Forwarding

Dës Aart vu Port Forwarding léisst Iech vun Ärem lokalen Computer mat engem Fernserver verbannen. Unzehuelen datt Dir hannert enger restriktiver Firewall sidd oder duerch eng erausgaang Firewall blockéiert sidd fir Zougang zu enger Applikatioun déi um Port 3000 op Ärem Fernserver leeft.

Dir kënnt e lokalen Hafen weiderginn (zB 8080) deen Dir dann benotze kënnt fir op d'Applikatioun lokal wéi follegt ze kommen. De -L Fändel definéiert den Hafen, deen op den Fernhost an de Fernport weidergeleet gëtt.

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

Den -N Fändel bäizefügen heescht net e Fernbefehl ausféieren, Dir kritt an dësem Fall keng Shell.

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

De -f Schalter instruéiert ssh fir am Hannergrond ze lafen.

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

Elo, op Ärer lokaler Maschinn, öffnen e Browser, anstatt Zougang zu der Fernapplikatioun mat der Adressserver1.example.com:3000 ze benotzen, kënnt Dir einfach localhost:8080 oder 192.168.43.31 benotzen: 8080, wéi am Screenshot ënnendrënner.

Remote SSH Port Forwarding

Remote Port Forwarding erlaabt Iech vun Ärer Remote Maschinn op de lokalen Computer ze verbannen. Par défaut erlaabt SSH net Remote Port Forwarding. Dir kënnt dëst aktivéieren andeems Dir d'GatewayPorts Direktiv an Ärer SSHD Haaptkonfiguratiounsdatei /etc/ssh/sshd_config um Fernhost benotzt.

Öffnen d'Datei fir z'änneren mat Ärem Liiblings Kommandozeil Editor.

$ sudo vim /etc/ssh/sshd_config 

Kuckt no der erfuerderter Direktiv, decommentéiert se a setzt säi Wäert op jo, wéi am Screenshot gewisen.

GatewayPorts yes

Späichert d'Ännerungen a gitt eraus. Als nächst musst Dir sshd nei starten fir déi rezent Ännerung z'applizéieren déi Dir gemaach hutt.

$ sudo systemctl restart sshd
OR
$ sudo service sshd restart 

Als nächst fuert de folgende Kommando fir den Hafen 5000 op der Fernmaschinn op den Hafen 3000 op der lokaler Maschinn weiderzebréngen.

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

Wann Dir dës Methode vum Tunneling versteet, kënnt Dir e lokalen Entwécklungsserver ganz einfach a sécher ausstellen, besonnesch hannert NATs a Firewalls um Internet iwwer sécher Tunnel. Tunnel wéi Ngrok, Pagekite, Localtunnel, a vill anerer funktionnéieren op eng ähnlech Manéier.

Dynamic SSH Port Forwarding

Dëst ass déi drëtt Aart vu Port Forwarding. Am Géigesaz zu lokalen a Remote Port Forwarding déi d'Kommunikatioun mat engem eenzegen Hafen erlaabt, mécht et méiglech eng ganz Palette vun TCP Kommunikatiounen iwwer eng Rei Ports. Dynamesch Port Forwarding setzt Är Maschinn als SOCKS Proxy Server op, deen um Hafen 1080 nolauschtert, par défaut.

Fir Ufänger ass SOCKS en Internetprotokoll deen definéiert wéi e Client mat engem Server iwwer e Proxy Server konnektéiere kann (SSH an dësem Fall). Dir kënnt dynamesch Port Forwarding aktivéieren mat der -D Optioun.

De folgende Kommando start e SOCKS Proxy um Hafen 1080, deen Iech erlaabt Iech mam Fernhost ze verbannen.

$ ssh -f -N -D 1080 [email 

Vun elo un kënnt Dir Applikatiounen op Ärer Maschinn dësen SSH Proxy Server benotzen andeems Dir hir Astellungen ännert an se konfiguréiert fir se ze benotzen, fir mat Ärem Fernserver ze verbannen. Bedenkt datt de SOCKS Proxy ophält ze schaffen nodeems Dir Är SSH Sessioun zougemaach hutt.

An dësem Artikel hu mir déi verschidden Aarte vu Port Forwarding vun enger Maschinn op déi aner erkläert, fir den Traffic duerch déi sécher SSH Verbindung ze tunneléieren. Dëst ass ee vun de ganz ville Gebrauch vu SSH. Dir kënnt Är Stëmm zu dësem Guide iwwer de Feedbackformular hei drënner addéieren.

Opgepasst: SSH Port Forwarding huet e puer bedeitend Nodeeler, et ka mëssbraucht ginn: et kann benotzt ginn fir Netzwierk Iwwerwaachung a Trafficfilterprogrammer (oder Firewalls) z'entgoen. Ugräifer kënnen et fir béiswëlleg Aktivitéiten benotzen. An eisem nächsten Artikel wäerte mir weisen wéi Dir SSH lokal Port Forwarding auszeschalten. Bleift verbonnen!