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:
- Lokal vert: 192.168.43.31
- 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!