Hvordan lage SSH Tunneling eller Port Forwarding i Linux


SSH-tunnelering (også referert til som SSH-portvideresending) er ganske enkelt å dirigere den lokale nettverkstrafikken gjennom SSH til eksterne verter. Dette innebærer at alle tilkoblingene dine er sikret med kryptering. Det gir en enkel måte å sette opp et grunnleggende VPN (Virtual Private Network), nyttig for å koble til private nettverk over usikre offentlige nettverk som Internett.

Du kan også bli brukt til å eksponere lokale servere bak NAT-er og brannmurer for Internett over sikre tunneler, som implementert i ngrok.

[Du vil kanskje også like: Hvordan sikre og herde OpenSSH Server ]

SSH-økter tillater tunneling av nettverkstilkoblinger som standard, og det er tre typer SSH-portvideresending: lokal, ekstern og dynamisk portvideresending.

I denne artikkelen vil vi demonstrere hvordan du raskt og enkelt setter opp SSH-tunneling eller de forskjellige typene portvideresending i Linux.

For formålet med denne artikkelen bruker vi følgende oppsett:

  1. Lokal vert: 192.168.43.31
  2. Ekstern vert: Linode CentOS 7 VPS med vertsnavn server1.example.com.

Vanligvis kan du trygt koble til en ekstern server ved å bruke SSH som følger. I dette eksemplet har jeg konfigurert passordløs SSH-pålogging mellom mine lokale og eksterne verter, så den har ikke bedt om brukeradmins passord.

$ ssh [email   

Lokal SSH-portvideresending

Denne typen portvideresending lar deg koble fra din lokale datamaskin til en ekstern server. Forutsatt at du er bak en restriktiv brannmur eller blokkert av en utgående brannmur fra å få tilgang til en applikasjon som kjører på port 3000 på den eksterne serveren.

Du kan videresende en lokal port (f.eks. 8080) som du deretter kan bruke for å få tilgang til applikasjonen lokalt som følger. -L-flagget definerer porten som videresendes til den eksterne verten og den eksterne porten.

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

Å legge til -N-flagget betyr ikke å utføre en ekstern kommando, du vil ikke få et skall i dette tilfellet.

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

-f-bryteren instruerer ssh til å kjøre i bakgrunnen.

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

Nå, på din lokale maskin, åpne en nettleser, i stedet for å få tilgang til den eksterne applikasjonen ved å bruke adressen server1.example.com:3000, kan du ganske enkelt bruke localhost:8080 eller 192.168.43.31: 8080, som vist på skjermbildet nedenfor.

Ekstern SSH-portvideresending

Ekstern portvideresending lar deg koble fra den eksterne maskinen til den lokale datamaskinen. Som standard tillater ikke SSH ekstern portvideresending. Du kan aktivere dette ved å bruke GatewayPorts-direktivet i SSHD-hovedkonfigurasjonsfilen /etc/ssh/sshd_config på den eksterne verten.

Åpne filen for redigering ved å bruke din favoritt kommandolinjeredigerer.

$ sudo vim /etc/ssh/sshd_config 

Se etter det nødvendige direktivet, fjern kommentarer og sett verdien til ja, som vist på skjermbildet.

GatewayPorts yes

Lagre endringene og avslutt. Deretter må du starte sshd på nytt for å bruke den nylige endringen du gjorde.

$ sudo systemctl restart sshd
OR
$ sudo service sshd restart 

Kjør deretter følgende kommando for å videresende port 5000 på den eksterne maskinen til port 3000 på den lokale maskinen.

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

Når du forstår denne metoden for tunnelering, kan du enkelt og sikkert eksponere en lokal utviklingsserver, spesielt bak NAT-er og brannmurer, for Internett over sikre tunneler. Tunneler som Ngrok, pagekite, localtunnel og mange andre fungerer på lignende måte.

Dynamisk SSH-portvideresending

Dette er den tredje typen portvideresending. I motsetning til lokal og ekstern portvideresending som tillater kommunikasjon med en enkelt port, muliggjør den et komplett utvalg av TCP-kommunikasjon på tvers av en rekke porter. Dynamisk portvideresending setter opp maskinen din som en SOCKS proxy-server som lytter på port 1080, som standard.

For det første er SOCKS en Internett-protokoll som definerer hvordan en klient kan koble til en server via en proxy-server (SSH i dette tilfellet). Du kan aktivere dynamisk portvideresending ved å bruke -D-alternativet.

Følgende kommando vil starte en SOCKS-proxy på port 1080 som lar deg koble til den eksterne verten.

$ ssh -f -N -D 1080 [email 

Fra nå av kan du få applikasjoner på maskinen din til å bruke denne SSH proxy-serveren ved å redigere innstillingene deres og konfigurere dem til å bruke den for å koble til den eksterne serveren. Merk at SOCKS-proxyen slutter å fungere etter at du lukker SSH-økten.

I denne artikkelen forklarte vi de ulike typene portvideresending fra én maskin til en annen, for tunnelering av trafikk gjennom den sikre SSH-tilkoblingen. Dette er en av svært mange bruksområder for SSH. Du kan legge til stemmen din i denne veiledningen via tilbakemeldingsskjemaet nedenfor.

OBS: SSH-portvideresending har noen betydelige ulemper, den kan misbrukes: den kan brukes til å omgå nettverksovervåking og trafikkfiltreringsprogrammer (eller brannmurer). Angripere kan bruke den til ondsinnede aktiviteter. I vår neste artikkel vil vi vise hvordan du deaktiverer SSH lokal portvideresending. Hold kontakten!