minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Port Mapping, também conhecido como Port Forwarding, é uma tecnologia que redireciona o fluxo de dados de uma porta de rede para outra porta de rede. Normalmente é usado para serviços executados atrás de um firewall ou roteador, permitindo que dispositivos externos acessem serviços específicos na rede interna. O mapeamento de portas pode ser feito dentro da rede local ou entre redes, usando protocolos como SSH.
Encaminhamento de porta local:
8080
mapeado para servidor remoto80
porta para que possa ser passada localmentelocalhost:8080
Acesse o serviço web do servidor remoto.Encaminhamento de porta remota:
2222
Mapeamento de porta para o computador local22
porta para que o serviço SSH do computador local possa ser acessado através do servidor remoto.Encaminhamento de porta dinâmico:
Acesso remoto a serviços internos: Através do mapeamento de portas, serviços específicos dentro da empresa ou rede doméstica podem ser acessados a partir da rede externa, como servidores web, servidores de banco de dados, etc.
Penetrar firewall: por meio do mapeamento de portas, você pode ignorar as restrições do firewall e acessar serviços bloqueados pelo firewall.
Melhore a segurança: O mapeamento de portas através do túnel SSH pode criptografar a transmissão de dados e melhorar a segurança.
Balanceamento de carga e proxies: balanceadores de carga e servidores proxy geralmente usam tecnologia de mapeamento de portas para distribuir e encaminhar tráfego para melhorar a confiabilidade e o desempenho do serviço.
Suponha que haja um serviço web em execução em um servidor remoto e a porta em que ele escuta seja80
. Para acessar este serviço do seu computador local, crie um mapeamento de porta local usando o seguinte comando SSH:
ssh -L 8080:localhost:80 user@remote-server
Este comando irá alterar o computador local8080
Mapeamento de porta para servidor remoto80
porta.Agora, acesse-o em seu navegador localhttp://localhost:8080
, que equivale a acessar o serviço Web do servidor remoto.
Existem vários motivos principais para fazer mapeamento de portas (ou encaminhamento de portas) durante o desenvolvimento:
Acesse serviços protegidos: Alguns serviços na máquina de desenvolvimento podem escutar apenas no host local (127.0.0.1
) e não pode ser acessado diretamente do exterior. Através do mapeamento portuário, estes serviços podem ser expostos e tornados acessíveis a partir do exterior.
segurança : o encaminhamento de porta através do túnel SSH permite acesso seguro a serviços internos sem expor diretamente o serviço. O túnel SSH criptografa a transmissão de dados para maior segurança.
Fácil de depurar : durante o processo de desenvolvimento, os desenvolvedores podem precisar acessar vários serviços em execução na máquina de desenvolvimento. Com o mapeamento de portas, esses serviços podem ser acessados diretamente do local, sem a necessidade de fazer login na máquina de desenvolvimento todas as vezes.
Ignorar firewall ou restrições de rede : em alguns ambientes de rede, pode haver firewalls ou restrições de rede que impedem o acesso direto aos serviços na máquina de desenvolvimento. Através do tunelamento SSH, essas restrições podem ser contornadas e o acesso aos serviços pode ser alcançado.
Acesso de vários usuários: se vários desenvolvedores precisarem acessar o mesmo serviço, o mapeamento de portas permite que cada desenvolvedor acesse o serviço em seu próprio ambiente local sem fazer login diretamente na máquina de desenvolvimento.
por exemplo:
Suponha que você tenha um servidor Jupyter Notebook em execução em sua máquina de desenvolvimento. Ele escuta na porta 7860, mas permite apenas acesso local. Através do seguinte comando SSH, você pode mapear a porta 7860 da máquina de desenvolvimento para sua porta 7860 local:
ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
Dessa forma, você pode acessá-lo em seu navegador local http://127.0.0.1:7860
para visualizar e usar o servidor Jupyter Notebook em sua máquina de desenvolvimento.
A máquina de desenvolvimento tem seu próprioporta expostaeIP Público, pode ser usado para nossa conexão ssh local
Mas na máquina de desenvolvimento, ou seja, no servidorRodar programaQuando, seu programa está no servidorem um determinado portoEm andamento
Portanto, se quisermos ver o efeito de execução do programa no servidor localmente, precisamos criarMapeamento de portas, quando o navegador abrir a porta local, encaminhe-o para a porta do servidor para visualização.
ssh -p 37367 [email protected] -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyChecking=no
Por exemplo:
ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
Este comando é usado para criar um túnel SSH. Abaixo está uma explicação detalhada de cada parte:
ssh
: Comando usado para iniciar uma conexão SSH.-p 37367
: Especifique o número da porta do host remoto ao qual se conectar (porta 37367 neste exemplo).[email protected]
: Nome de usuário (root) e nome de host (ssh.intern-ai.org.cn).-CNg
: Combinação de opções: -C
: Ativar a compactação.-N
: Diga ao SSH para não executar comandos remotos, apenas encaminhamento de porta.-g
: permite que hosts remotos se conectem à porta encaminhada.-L 7860:127.0.0.1:7860
: Execute o encaminhamento de porta local e mapeie a porta 7860 da máquina local para a porta 7860 de 127.0.0.1 do host remoto.-o StrictHostKeyChecking=no
: desativa a verificação da chave do host, o que evita prompts interativos ao conectar pela primeira vez.Em resumo, este comando criará um túnel SSH entre a máquina local e o host remoto, encaminhará a porta local 7860 para a porta 7860 do host remoto e não executará comandos remotos nem verificará a chave do host.
Como mostrado abaixo:
Após o mapeamento da porta, é exibido o programa em execução na porta 7860 do servidor.