Mi informacion de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Port Mapping, también conocido como Port Forwarding, es una tecnología que redirige el flujo de datos de un puerto de red a otro puerto de red. Normalmente se utiliza para servicios que se ejecutan detrás de un firewall o enrutador, lo que permite que dispositivos externos accedan a servicios específicos dentro de la red interna. El mapeo de puertos se puede realizar dentro de la red local o entre redes, utilizando protocolos como SSH.
Reenvío de puertos locales:
8080
asignado al servidor remoto80
puerto para que pueda pasarse localmentelocalhost:8080
Acceder al servicio web del servidor remoto.Reenvío de puertos remotos:
2222
Mapeo de puertos a la computadora local22
puerto para que se pueda acceder al servicio SSH de la computadora local a través del servidor remoto.Reenvío de puertos dinámicos:
Acceso remoto a servicios internos.: A través del mapeo de puertos, se puede acceder a servicios específicos dentro de la red empresarial o doméstica desde la red externa, como servidores web, servidores de bases de datos, etc.
Penetrar el firewall: A través del mapeo de puertos, puede evitar las restricciones del firewall y acceder a los servicios bloqueados por el firewall.
Mejorar la seguridad: El mapeo de puertos a través del túnel SSH puede cifrar la transmisión de datos y mejorar la seguridad.
Equilibrio de carga y proxies: Los equilibradores de carga y los servidores proxy suelen utilizar tecnología de mapeo de puertos para distribuir y reenviar el tráfico y mejorar la confiabilidad y el rendimiento del servicio.
Supongamos que hay un servicio web ejecutándose en un servidor remoto y el puerto en el que escucha es80
. Para acceder a este servicio desde su computadora local, cree una asignación de puerto local usando el siguiente comando SSH:
ssh -L 8080:localhost:80 user@remote-server
Este comando cambiará la configuración de la computadora local.8080
Mapeo de puertos al servidor remoto80
puerto.Ahora, acceda a él en su navegador local.http://localhost:8080
, lo que equivale a acceder al servicio web del servidor remoto.
Hay varias razones principales para realizar un mapeo de puertos (o reenvío de puertos) durante el desarrollo:
Accede a servicios protegidos: Es posible que algunos servicios en la máquina de desarrollo solo escuchen en localhost (127.0.0.1
) y no se puede acceder directamente desde el exterior. A través del mapeo portuario, estos servicios pueden exponerse y hacerse accesibles desde el exterior.
seguridad : El reenvío de puertos a través del túnel SSH permite el acceso seguro a servicios internos sin exponer directamente el servicio. El túnel SSH cifra la transmisión de datos para mayor seguridad.
Fácil de depurar : Durante el proceso de desarrollo, es posible que los desarrolladores necesiten acceder a múltiples servicios que se ejecutan en la máquina de desarrollo. Con el mapeo de puertos, se puede acceder a estos servicios directamente desde el local sin tener que iniciar sesión en la máquina de desarrollo cada vez.
Evite las restricciones de red o firewall : En algunos entornos de red, puede haber firewalls o restricciones de red que impidan el acceso directo a los servicios en la máquina de desarrollo. A través del túnel SSH, se pueden evitar estas restricciones y se puede lograr el acceso a los servicios.
Acceso de múltiples usuarios: Si varios desarrolladores necesitan acceder al mismo servicio, el mapeo de puertos permite que cada desarrollador acceda al servicio en su propio entorno local sin iniciar sesión directamente en la máquina de desarrollo.
Por ejemplo:
Suponga que tiene un servidor Jupyter Notebook ejecutándose en su máquina de desarrollo. Escucha en el puerto 7860 pero solo permite el acceso local. Mediante el siguiente comando SSH, puede asignar el puerto 7860 de la máquina de desarrollo a su puerto 7860 local:
ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
De esta manera, podrás acceder a él en tu navegador local. http://127.0.0.1:7860
para ver y utilizar el servidor Jupyter Notebook en su máquina de desarrollo.
La máquina de desarrollo tiene su propiapuerto expuestoyIP pública, se puede utilizar para nuestra conexión ssh local
Pero en la máquina de desarrollo, es decir, el servidor.Ejecute el programaCuando su programa está en el servidor.en un puerto determinadoEn curso
Entonces, si queremos ver el efecto de ejecución del programa en el servidor localmente, necesitamos crearLa asignación de puertos, cuando el navegador abre el puerto local, lo reenvía al puerto del servidor para verlo.
ssh -p 37367 [email protected] -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyChecking=no
Por ejemplo:
ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
Este comando se utiliza para crear un túnel SSH. A continuación se muestra una explicación detallada de cada parte:
ssh
: Comando utilizado para iniciar una conexión SSH.-p 37367
: Especifique el número de puerto del host remoto al que conectarse (puerto 37367 en este ejemplo).[email protected]
: Nombre de usuario (raíz) y nombre de host (ssh.intern-ai.org.cn).-CNg
: Combinación de opciones: -C
: Habilitar la compresión.-N
: Dígale a SSH que no ejecute comandos remotos, solo reenvío de puertos.-g
: permite que los hosts remotos se conecten al puerto reenviado.-L 7860:127.0.0.1:7860
: Realice el reenvío de puerto local y asigne el puerto 7860 de la máquina local al puerto 7860 de 127.0.0.1 del host remoto.-o StrictHostKeyChecking=no
: deshabilite la verificación de la clave del host, lo que evita mensajes interactivos cuando se conecta por primera vez.En resumen, este comando creará un túnel SSH entre la máquina local y el host remoto, reenviará el puerto local 7860 al puerto 7860 del host remoto y no ejecutará comandos remotos ni verificará la clave del host.
Como se muestra abajo:
Después del mapeo de puertos, se muestra el programa que se ejecuta en el puerto 7860 del servidor.