Redirección local por SSH a un proxy HTTP existente: dous enderezos de loopback
Un proxy existente nun host SSH pode servir unha aplicación mediante unha soa redirección local. Mantén separados os dous enderezos de loopback e o protocolo do proxy.
O teu proxy aprobado execútase nun host de salto onde só escoita en loopback, así que nada fóra desa máquina pode alcanzalo. Non necesitas unha VPN nin un proxy novo; necesitas un porto desa máquina levado a un porto teu. Unha redirección local fai exactamente iso, e só require un comando e un axuste da aplicación. A confusión adoita vir de mesturar que enderezo de loopback pertence a que máquina.
Decide se xa existe un proxy fixo
Esta técnica redirixe un servizo que xa está en execución. Se o host remoto só ten un demo SSH e ningún proxy, ningunha cantidade de redirección creará un, e a conexión será rexeitada desde o lado remoto. Confirma que o proxy está vinculado, cal é o seu porto e se escoita en 127.0.0.1 ou nun enderezo de interface concreto, porque ese enderezo é o que debe apuntar a redirección.
Confirma-lo primeiro aforra che depurar un túnel que nunca estivo conectado a nada.
Constrúe a redirección e le o comando
A forma que queres vincula un porto de loopback no teu portátil e conéctao, desde o lado do servidor, ao enderezo do proxy tal como o ve o servidor.
ssh -NT -o ControlPath=none -o ExitOnForwardFailure=yes \
-L 127.0.0.1:13128:127.0.0.1:3128 [email protected]-N suprime un comando remoto e -T suprime a asignación de termios, porque queres un túnel e non un shell. O primeiro enderezo de loopback é onde escoita o portátil; o segundo resólveo o servidor SSH, así que 127.0.0.1 alí significa o proxy desa máquina. ExitOnForwardFailure fai que o comando falle ruidosamente se o porto local xa está ocupado, en lugar de iniciar unha sesión que non redirixe nada. Escribe o enderezo de destino tal como o resolve o servidor, porque un nome que só o teu portátil pode resolver fallará no outro extremo.
A política do propio servidor aplícase antes de que algo disto funcione. AllowTcpForwarding debe permitilo, e PermitOpen pode restrinxir a que destinos e portos pode chegar unha sesión, así que unha redirección que o cliente acepta aínda pode ser rexeitada polo servidor. O rexeitamento aparece como un erro de redirección ou de canle no cliente, e ler esa mensaxe é máis rápido que editar o comando.
Apunta unha aplicación á redirección
Configura a aplicación para usar un proxy HTTP en http://127.0.0.1:13128, con credenciais se o proxy remoto as esixe. Mantén a verificación de certificados propia da aplicación para destinos HTTPS, xa que o túnel do proxy non a substitúe. Esta é unha redirección fixa dun servizo, así que hai que dicirlle á aplicación que existe un proxy en lugar de deixala descubrilo.
Unha comprobación rápida antes de configurar nada permanente: curl -x http://127.0.0.1:13128 -I https://example.com, que exercita o método HTTP CONNECT que o proxy debe admitir.
Mantén a autoridade onde estaba
O proxy remoto segue decidindo que destinos e métodos permite, e un inicio de sesión SSH non debería conceder en silencio un relé web xeral a cada conta. Vincular a 127.0.0.1 no portátil evita publicar o porto na túa rede local, e non fai que o porto sexa privado fronte a outros procesos da mesma máquina. Substituír esa vinculación por un enderezo wildcard para compartir o proxy é como se crea un relé aberto non xestionado.
O transporte SSH protexe o salto ata o servidor. Máis alá dese punto o proxy abre a súa propia conexión, así que unha petición HTTP simple a un destino segue a ser simple máis alá do servidor, aínda que o primeiro tramo estivese cifrado.
Verifica ambos os extremos e logo limpa
A configuración do túnel local e o éxito do servizo remoto son resultados distintos, e o estado de saída do comando só che fala do primeiro. Comproba que o oínte existe con ss -ltn, e despois fai unha petición permitida da aplicación e unha petición que o proxy debería rexeitar. Se ambos se comportan como se espera, o camiño é real; se o túnel está activo e toda petición falla, o proxy está rexeitando ou non pode chegar ao destino.
Cando remates, detén o proceso SSH que o posúe, elimina o axuste de proxy da aplicación e confirma que o porto local desapareceu en lugar de deixar un oínte que sobreviva á tarefa.