Suposições:
- Existe um servidor remoto por trás do NAT, o IP público é
185.68.93.141
, mas devido ao NAT, o servidor não está diretamente disponível. - O servidor executa
sshd
na porta22
ehttpd
na porta80
. -
185.68.93.141:22
é encaminhado para o servidor, então podemosssh
in (comossh 185.68.93.141
). -
185.68.93.141:80
é não encaminhado para o servidor.
Objetivo:
- Alcance o controle remoto
httpd
do lado de fora.
Possíveis abordagens:
-
ssh -L 5678:localhost:80 185.68.93.141
(Nota: o
localhost
acima significa localhost no contexto do servidor remoto). Agora, todas as conexões comlocalhost:5678
no computador local atingirãolocalhost:80
(127.0.0.1:80
) do servidor remoto. O controle remotohttpd
"verá" a conexão do próprio servidor remoto. Seu navegador local deve visitarhttp://localhost:5678
. Existem alguns obstáculos:- O controle remoto
httpd
pode rejeitar a conexão porque o URL usado não é o que ele espera, digamos que ele esperehttp://example.com
. Você pode corrigir isso redirecionandoexample.com
para127.0.0.1
no lado local fornecendo seu próprio serviço DNS ou modificando/etc/hosts
. Mesmo assim, você precisa se conectar aohttp://example.com:5678
. - Talvez você queira usar a porta
80
em vez de5678
no lado local (portanto, com o truque acima, a URL a ser usada é ahttp://example.com
desejada), mas provavelmente o sistema operacional local não permitirá que você abra portas com números menores que1024
, a menos que você sejaroot
(ou administrador etc.). A execução dessh
comoroot
não é recomendada.
- O controle remoto
-
ssh -D 5678 185.68.93.141
Nesse caso, você precisa configurar seu navegador local para usar o proxy dinâmico SOCKS4 ou SOCKS5 em
localhost:5678
(127.0.0.1:5678
). As conexões para qualquer site visitado são estabelecidas pelosshd
no lado remoto em nome do navegador. Seu navegador é "visto" como se estivesse conectado a partir do servidor remoto. Agora tudo o que você precisa fazer é usar o URL que funciona ao conectar-se do servidor remoto ao seu própriohttpd
(mas se forhttp://localhost
ou semelhante, lembre-se de que seu navegador local pode ter uma opção como "não usar proxy para endereços locais ").Mais informações aqui .
Se você quiser usar 185.68.93.141
(ou somewebsite.com
que resolve para 185.68.93.141
) como a parte principal do URL em seu navegador local e ainda alcançar o controle remoto sshd
apesar da falta da porta 80
encaminhando em 185.68.93.141
, então você precisa fazer o navegador se conectar de acordo com as regras acima de alguma forma. O único ssh
não tem como interceptar tráfego do navegador que não coopera.