O protocolo SSHv2 inclui funcionalidade para solicitar que o servidor estabeleça uma conexão TCP e retransmita dados entre os cliente (você) e o host remoto fornecido, sobre sua conexão SSH. Tudo o que importa é o fluxo TCP bruto.
Seu cliente SSH (isto é, PuTTY ou OpenSSH) é capaz de usar essa funcionalidade de várias maneiras: além do host remoto configurado estaticamente: port ("encaminhamento local" ou "encaminhamento remoto") o cliente também pode atuar como um servidor SOCKS 5 , permitindo que outros programas (como o Firefox) especifiquem onde se conectar.
Para o navegador, seu programa SSH se parece com um servidor proxy SOCKS comum. (O servidor SSH ao qual você está se conectando não sabe tudo isso - ele apenas atua nas solicitações "abrir uma conexão TCP para google.com:80" . Nenhum servidor proxy adicional está envolvido, .)
- navegador da web ↔ (SOCKS 5) ↔ cliente SSH ↔ (SSH) ↔ servidor SSH ↔ (TCP) ↔ servidor web
Observe que o protocolo de proxy usado é o SOCKS, não o HTTP. Em outras palavras, o cliente SSH não se importa com solicitações HTTP - ele funciona em um nível inferior, transmitindo conexões TCP brutas. Isso também significa que qualquer qualquer protocolo usando TCP pode ser encapsulado dessa maneira, incluindo email, HTTP / SSL e o próprio SSH.