O encaminhamento de porta local SSH para tráfego da Web requer configuração de proxy nas configurações do navegador?

3

Eu habilitei o encaminhamento de porta local SSH com um comando ssh -NL 8080:whatsmyip.org:80 <remote-sshd-machine> . Agora, quando abri o Firefox e naveguei para http://127.0.0.1:8080 , a página da web não foi aberta. No entanto, se eu configurasse um proxy HTTP para 127.0.0.1 e port 8080 no menu de configurações de rede do Firefox, a página da Web abriria e o whatsmyip.org informaria o endereço IP do servidor SSH remoto como deveria. Por que preciso configurar as configurações de proxy no navegador para que isso funcione?

    
por Martin 30.08.2014 / 01:30

1 resposta

2

Se o que você está tentando fazer é usar seu servidor SSH remoto como um proxy SOCKS para o seu navegador, o comando ssh que você está procurando é:

ssh -N -D8080 <remote-sshd-machine>

Isso iniciará um proxy SOCKSv4 / 5 na porta TCP 8080 do host local, que permite navegar em qualquer site com o endereço IP do servidor SSH remoto. Se, no entanto, você estiver tentando acessar um site remoto (por exemplo, whatsmyip.org) via localhost, observe o seguinte:

  1. O servidor remoto deve não usar hosts virtuais baseados em nome. A hospedagem virtual baseada em nome coloca vários sites diferentes (por exemplo, example.com e example.org) no mesmo endereço IP. A diferenciação entre sites é feita exclusivamente pelo URL fornecido no navegador, já que tanto example.com quanto example.org resolveriam o mesmo IP. No seu caso, o servidor remoto olharia para a URL, que é http://localhost e provavelmente produziria um erro ou faria algo imprevisível (o Apache tende a fazer isso!), Porque não reconhece o nome do domínio "localhost" em sua lista. de hosts virtuais baseados em nome.
  2. O servidor remoto deve ignorar o fato de que o número da porta foi alterado de 80 para 8080. Normalmente, a maioria dos sites HTML estáticos e servidores da Web o ignoram, no entanto, alguns servidores e aplicativos da Web podem tentar redirecioná-lo para a porta 80, que obviamente quebrar as coisas para você.

Se você realmente deseja simular o acima (eu não testei isso completamente, e eu não encorajo você a ter o hábito de rodar o ssh como root!), tente isto:

sudo ssh -N -L 127.0.0.1:80:whatsmyip.org:80 <remote-sshd-machine>

você precisa do sudo acima, porque está solicitando ao cliente ssh para escutar na porta 80, que é < 1024 e é considerada uma porta privilegiada, e apenas os processos de propriedade do root podem se vincular a essas portas. Observe também que você não pode executar nenhum outro serviço na porta 80 do seu cliente (por exemplo, um servidor da Web). Se estiver, você precisará interromper esse serviço e liberar a porta 80 antes de tentar este comando.

Em segundo lugar, adicione a seguinte linha ao seu / etc / hosts:

127.0.0.1 whatsmyip.org www.whatsmyip.org

O primeiro comando encaminhará a porta TCP 80 em sua máquina local (cliente SSH) para a porta 80 em whatsmyip.org. O arquivo hosts garantirá que quando você solicitar whatsmyip.org com seu navegador, esse nome seja resolvido para seu host local. Desta forma, você está preservando o número da porta e o nome do host que seu navegador enviará para whatsmyip.org através do seu túnel SSH. Como você sabe se o túnel funcionou? whatsmyip.org deve relatar o endereço IP do servidor SSH (máquina SSHd remota) em vez do cliente.

    
por 30.08.2014 / 05:23