Quando você visita um site (um que não é impedido pelo seu firewall corporativo), seu navegador envia uma solicitação ao servidor listado na URL na porta 80 (por padrão). Por exemplo, para visitar este site, nossos navegadores se comunicam com a porta 80 do servidor unix.stackexchange.com
Ao definir suas configurações de proxy, você disse ao seu navegador para enviar tudo para localhost
port 7070, independentemente do URL. Um servidor proxy é projetado para buscar dados em nome de um cliente. Existem vários servidores proxy disponíveis (uma pesquisa rápida no repositório do seu disto trará alguns - squid
é um e os servidores apache
e nginx
também podem atuar como proxies), mas instalar um não ajudaria seu cenário como o proxy tentaria acessar o site em seu nome e ainda ser bloqueado pelo seu firewall corporativo.
No entanto, ssh
com a opção -D em conjunto com o daemon sshd
no site remoto ( yourserver.com
) age como um servidor proxy, exceto que este é dividido em duas metades - um local ssh
e um controle remoto sshd
.
A solicitação do seu navegador para http://unix.stackexchange.com
é enviada para o cliente ssh
em seu computador que está escutando na porta 7070
. Isso criptografa a solicitação e a envia ao servidor sshd
remoto. Isso descriptografa a solicitação e coloca a conexão para o servidor relevante (novamente unix.stackexchange.com
, porta 80) com o caminho de retorno (o endereço IP e a porta para os quais o servidor deve retornar sua resposta) modificado para ser o sshd
servidor ( yourserver.com
).
O servidor da Web do Stack Exchange não sabe nada sobre esse proxy e responde com a página solicitada para o endereço IP e porta do servidor sshd
(devido a essa pequena modificação). No entanto, este servidor está ciente de que a solicitação originou-se de ssh
em execução no seu computador (ele mantém uma tabela desse tipo de informação), portanto, criptografa e envia de volta para você. ssh
no seu computador envia a resposta de volta para o seu navegador, que exibe sua página para você.
ssh
está agindo como um proxy distribuído. O 'tunelamento' aqui é o fato de que o proxy está em duas metades e eles se comunicam através de um túnel criptografado que ninguém pode bisbilhotar e (no seu caso) está usando uma porta que não está bloqueada pelo seu firewall (porta 22). ).