Posso criar SSH para encapsular HTTP através do servidor como se fosse proxy?

33

Diga que eu tenho um servere client. Eu preciso criar conexão de clienta websiteatravés de servercomo se fosse proxy.

É possível fazer isso usando um tunel SSH ou preciso instalar algum serviço proxy no server?

Jakub Arnold
fonte

Respostas:

43

Você pode fazer isso usando ssh

ssh -L 80:remotehost:80 user@myserver

Você terá um túnel da porta 80 local para a porta 80 do host remoto. Isso não precisa ser o mesmo que myserver. Para tornar isso transparente, você deve adicionar uma entrada ao arquivo hosts. Se você não fizer isso, os vhosts não funcionarão. Se você deseja uma conexão proxy SOCKS, também pode usar

ssh -D 5000 user@myserver

Isso criará um proxy SOCKS na porta 5000 do host local, que encaminha todas as solicitações através do myserver.

Wienczny
fonte
2
Se você precisar que esse túnel esteja disponível a partir de clientes fora da sua caixa, adicione a opção -g.
mr-euro
11
O comando escrito não funcionou para mim. Eu tive que substituir o host remoto com o auto-retorno como este: ssh -L 80: 127.0.0.1: 80 user @ myserver
eficker
Seria mais útil se a porta remota fosse diferente da ssh -L 81:remotehost:80 user@myserverporta local 81 local como se fosse 80 no remoto.
Rafareino 19/07/2016
11
Se você deseja adicionar o proxy SOCKS através de seu ~ / .ssh / config, use:Host myserver User user DynamicForward 5000
bonh
15

Sim, é possível.

Execute ssh -D port user@hoste configure seu cliente para usar sua caixa como um proxy SOCKS.

Se você precisar de um proxy HTTP especificamente, poderá usar as Proxychains e encaminhá-lo através dos SOCKS anteriores.

senhor-euro
fonte
5

Putty faz isso muito bem também.

Em SSH, vá para Túneis. Na parte inferior, coloque 8080 na porta e, para o destino, deixe-o em preto e selecione o botão de opção "Dinâmico". É tudo o que você precisa fazer, agora conecte-se ao servidor usando o Putty.

Uma vez conectado, você tem um servidor proxy em execução no seu host local na porta 8080, que fará o proxy de todas as solicitações através do seu servidor.

Agora use um navegador da Web e configure o proxy configurando host = localhost e port = 8080 e verifique se é um proxy SOCKS que você selecionou. Eu faço isso o tempo todo, portanto, se você usa o Firefox, instale o plug-in FoxyProxy, pois isso torna a ativação / desativação do proxy um caso de um clique.

Cuidado: Esteja ciente de que, por padrão, suas solicitações de DNS não são enviadas por proxy. Portanto, o site que você visita via proxy ainda será registrado (se eles registrarem essas coisas). Você também pode definir o firefox como proxy de solicitações de DNS, apenas não o faz por padrão.

J Sidhu
fonte
5

O sshuttle funciona como uma VPN, mas por SSH.

Servidor proxy transparente que funciona como uma VPN de pobre. Avança sobre ssh. Não requer administrador. Funciona com Linux e MacOS. Suporta encapsulamento de DNS.

https://github.com/sshuttle/sshuttle

Kasper Grubbe
fonte
2

Para permitir que um proxy execute um computador e permitir que outros clientes se conectem a você, será necessária a opção -g. Por exemplo, você executaria isso no servidor chamado foo:

ssh -g -ND 9191 root@remotehost

Em seguida, você pode definir o proxy no navegador de um cliente para usar o servidor foo e a porta 9191 para um proxy SOCKS. Os clientes enviarão seus pedidos também, que, por sua vez, encaminharão o pedido através do ssh para o remotehost. Portanto, na internet, parece que eles estão usando o remotehost.

Se você deseja encaminhar solicitações de DNS também com o firefox, edite o about: config no firefox e defina network.proxy.socks_remote_dns como true.

Kyle Brandt
fonte