Com crear un túnel SSH o reenviament de ports a Linux


El túnel SSH (també conegut com a reenviament de ports SSH) és simplement encaminar el trànsit de la xarxa local a través de SSH als amfitrions remots. Això implica que totes les vostres connexions estan protegides mitjançant el xifratge. Proporciona una manera senzilla de configurar una VPN bàsica (Xarxa Privada Virtual), útil per connectar-se a xarxes privades a través de xarxes públiques no segures com Internet.

També es pot utilitzar per exposar servidors locals darrere de NAT i tallafocs a Internet a través de túnels segurs, tal com s'implementa a ngrok.

[ També us pot agradar: Com protegir i endurir el servidor OpenSSH ]

Les sessions SSH permeten tunelitzar les connexions de xarxa de manera predeterminada i hi ha tres tipus de reenviament de ports SSH: local, remot i dinàmic.

En aquest article, demostrarem com configurar ràpidament i fàcilment el túnel SSH o els diferents tipus de reenviament de ports a Linux.

Per als propòsits d'aquest article, estem utilitzant la configuració següent:

  1. Amfitrió local: 192.168.43.31
  2. Amfitrió remot: Linode CentOS 7 VPS amb nom d'amfitrió server1.example.com.

Normalment, podeu connectar-vos de manera segura a un servidor remot mitjançant SSH de la següent manera. En aquest exemple, he configurat l'inici de sessió SSH sense contrasenya entre els meus amfitrions locals i remots, de manera que no ha demanat la contrasenya de l'administrador de l'usuari.

$ ssh [email   

Reenviament de ports SSH local

Aquest tipus de reenviament de ports us permet connectar-vos des del vostre ordinador local a un servidor remot. Suposant que esteu darrere d'un tallafoc restrictiu o bloquejat per un tallafoc sortint per accedir a una aplicació que s'executa al port 3000 del vostre servidor remot.

Podeu reenviar un port local (per exemple, 8080) que podeu utilitzar per accedir a l'aplicació localment de la següent manera. El senyalador -L defineix el port reenviat a l'amfitrió remot i al port remot.

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

Afegir el senyalador -N vol dir que no executeu cap ordre remota, no obtindreu cap shell en aquest cas.

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

L'interruptor -f indica a ssh que s'executi en segon pla.

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

Ara, a la vostra màquina local, obriu un navegador, en lloc d'accedir a l'aplicació remota mitjançant l'adreça server1.example.com:3000, simplement podeu utilitzar localhost:8080 o 192.168.43.31: 8080, tal com es mostra a la captura de pantalla següent.

Reenviament remot de ports SSH

El reenviament de ports remots us permet connectar-vos des de la vostra màquina remota a l'ordinador local. Per defecte, SSH no permet el reenviament de ports remots. Podeu activar-ho mitjançant la directiva GatewayPorts del vostre fitxer de configuració principal SSHD /etc/ssh/sshd_config a l'amfitrió remot.

Obriu el fitxer per editar-lo amb el vostre editor de línia d'ordres preferit.

$ sudo vim /etc/ssh/sshd_config 

Busqueu la directiva necessària, descomenceu-la i definiu-ne el valor a yes, tal com es mostra a la captura de pantalla.

GatewayPorts yes

Deseu els canvis i sortiu. A continuació, heu de reiniciar sshd per aplicar el canvi recent que heu fet.

$ sudo systemctl restart sshd
OR
$ sudo service sshd restart 

A continuació, executeu l'ordre següent per reenviar el port 5000 de la màquina remota al port 3000 de la màquina local.

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

Un cop hàgiu entès aquest mètode de túnel, podeu exposar de manera fàcil i segura un servidor de desenvolupament local, especialment darrere de NAT i tallafocs a Internet a través de túnels segurs. Túnels com Ngrok, pagekite, localtunnel i molts altres funcionen de manera similar.

Reenviament de ports SSH dinàmic

Aquest és el tercer tipus de reenviament de ports. A diferència del reenviament de ports local i remot que permet la comunicació amb un únic port, fa possible una gamma completa de comunicacions TCP a través d'una sèrie de ports. El reenviament de ports dinàmic configura la vostra màquina com a servidor intermediari SOCKS que escolta al port 1080, de manera predeterminada.

Per començar, SOCKS és un protocol d'Internet que defineix com un client es pot connectar a un servidor mitjançant un servidor intermediari (SSH en aquest cas). Podeu habilitar el reenviament de ports dinàmics mitjançant l'opció -D.

L'ordre següent iniciarà un servidor intermediari SOCKS al port 1080 que us permetrà connectar-vos a l'amfitrió remot.

$ ssh -f -N -D 1080 [email 

A partir d'ara, podeu fer que les aplicacions de la vostra màquina utilitzin aquest servidor intermediari SSH editant-ne la configuració i configurant-les perquè l'utilitzin, per connectar-vos al vostre servidor remot. Tingueu en compte que el servidor intermediari SOCKS deixarà de funcionar després de tancar la vostra sessió SSH.

En aquest article, vam explicar els diferents tipus de reenviament de ports d'una màquina a una altra, per tunelitzar el trànsit a través de la connexió SSH segura. Aquest és un dels molts usos de SSH. Podeu afegir la vostra veu a aquesta guia mitjançant el formulari de comentaris que trobareu a continuació.

Atenció: el reenviament de ports SSH té alguns desavantatges considerables, es pot abusar: es pot utilitzar per evitar el monitoratge de la xarxa i els programes de filtratge de trànsit (o tallafocs). Els atacants poden utilitzar-lo per a activitats malicioses. Al nostre proper article, mostrarem com desactivar el reenviament de ports locals SSH. Mantén-te connectat!