Sådan oprettes SSH-tunnelering eller portvideresendelse i Linux


SSH-tunneling (også kaldet videresendelse af SSH-porte) dirigerer simpelthen den lokale netværkstrafik gennem SSH til fjernværter. Dette indebærer, at alle dine forbindelser er sikret ved hjælp af kryptering. Det giver en nem måde at oprette et grundlæggende VPN (Virtual Private Network), der er nyttigt til at oprette forbindelse til private netværk via usikre offentlige netværk som Internettet.

Du kan også blive brugt til at udsætte lokale servere bag NAT og firewalls for Internettet over sikre tunneler, som implementeret i ngrok.

SSH-sessioner tillader tunneling af netværksforbindelser som standard, og der er tre typer SSH-portvideresendelse: lokal, ekstern og dynamisk portvideresendelse.

I denne artikel vil vi demonstrere, hvordan man hurtigt og nemt opsætter SSH-tunneling eller de forskellige typer portvideresendelse i Linux.

I forbindelse med denne artikel bruger vi følgende opsætning:

  1. Lokal vært: 192.168.43.31
  2. Fjernhost: Linode CentOS 7 VPS med værtsnavn server1.example.com.

Normalt kan du sikkert oprette forbindelse til en ekstern server ved hjælp af SSH som følger. I dette eksempel har jeg konfigureret SSH-login uden adgangskode mellem mine lokale og eksterne værter, så det har ikke bedt om brugeradministratorens adgangskode.

$ ssh [email   

Lokal videresendelse af SSH-port

Denne type portvideresendelse giver dig mulighed for at oprette forbindelse fra din lokale computer til en ekstern server. Forudsat at du står bag en restriktiv firewall eller er blokeret af en udgående firewall fra at få adgang til et program, der kører på port 3000 på din eksterne server.

Du kan videresende en lokal port (f.eks. 8080), som du derefter kan bruge til at få adgang til applikationen lokalt som følger. Flagget -L definerer den port, der videresendes til den eksterne vært og den eksterne port.

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

Tilføjelse af -N -flaget betyder, at du ikke udfører en fjernkommando, du får ikke en shell i dette tilfælde.

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

Omskifteren -f instruerer ssh til at køre i baggrunden.

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

Åbn nu en browser på din lokale maskine i stedet for at få adgang til fjernapplikationen ved hjælp af adresseserveren1.eksempel.com:3000, kan du blot bruge localhost: 8080 eller 192.168.43.31: 8080 , som vist på nedenstående skærmbillede.

Fjern SSH-portvideresendelse

Fjernport-videresendelse giver dig mulighed for at oprette forbindelse fra din eksterne maskine til den lokale computer. Som standard tillader SSH ikke videresendelse af fjernport. Du kan aktivere dette ved hjælp af GatewayPorts-direktivet i din SSHD-hovedkonfigurationsfil/etc/ssh/sshd_config på den eksterne vært.

Åbn filen til redigering ved hjælp af din foretrukne kommandolinjeditor.

$ sudo vim /etc/ssh/sshd_config 

Se efter det krævede direktiv, fjern kommentar og sæt dets værdi til ja , som vist på skærmbilledet.

GatewayPorts yes

Gem ændringerne, og afslut. Dernæst skal du genstarte sshd for at anvende den seneste ændring, du har foretaget.

$ sudo systemctl restart sshd
OR
$ sudo service sshd restart 

Kør derefter følgende kommando for at videresende port 5000 på den eksterne maskine til port 3000 på den lokale maskine.

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

Når du først har forstået denne metode til tunneling, kan du nemt og sikkert udsætte en lokal udviklingsserver, især bag NAT'er og firewalls, til Internettet via sikre tunneler. Tunneler som Ngrok, pagekite, localtunnel og mange andre fungerer på samme måde.

Dynamisk videresendelse af SSH-port

Dette er den tredje type portvideresendelse. I modsætning til lokal videresendelse af port og fjernport, som muliggør kommunikation med en enkelt port, gør det muligt et komplet udvalg af TCP-kommunikation på tværs af en række porte. Dynamisk portvideresendelse konfigurerer din maskine som en SOCKS-proxyserver, der som standard lytter til port 1080.

Til at begynde med er SOCKS en internetprotokol, der definerer, hvordan en klient kan oprette forbindelse til en server via en proxyserver (SSH i dette tilfælde). Du kan aktivere dynamisk portvideresendelse ved hjælp af -D-indstillingen.

Den følgende kommando starter en SOCKS-proxy på port 1080, så du kan oprette forbindelse til den eksterne vært.

$ ssh -f -N -D 1080 [email 

Fra nu af kan du få applikationer på din maskine til at bruge denne SSH-proxyserver ved at redigere deres indstillinger og konfigurere dem til at bruge den, til at oprette forbindelse til din eksterne server. Bemærk, at SOCKS-proxyen holder op med at arbejde, når du lukker din SSH-session.

I denne artikel forklarede vi de forskellige typer videresendelse af porte fra en maskine til en anden til tunneling af trafik gennem den sikre SSH-forbindelse. Dette er en af de meget mange anvendelser af SSH. Du kan tilføje din stemme til denne vejledning via feedbackformularen nedenfor.

OBS: Videresendelse af SSH-port har nogle betydelige ulemper, den kan misbruges: den kan bruges til at omgå netværksovervågning og trafikfiltreringsprogrammer (eller firewalls). Angribere kan bruge det til ondsindede aktiviteter. I vores næste artikel viser vi, hvordan du deaktiverer SSH lokal portvideresendelse. Forbliv forbundet!