Durante a depuração, aumente sua visibilidade removendo -fN do comando ssh e adicione -vvv a para informações de depuração. Isso só lhe dará informações do lado do cliente, mas pode lhe dizer mais.
Eu sei que ssh fornece um proxy SOCKS com -D . Gostaria de saber se é possível iniciar tal proxy sob demanda, no momento em que uma conexão é feita para uma porta especificada (usando os gostos de socat e nc sob o capô). Esta é uma máquina de usuário único, portanto, nenhuma autenticação de conexões locais é necessária.
Aqui está o que eu tentei:
Diga ao navegador da Web para usar um proxy SOCKS em localhost:portA .
Para cada conexão à porta "acionador" portA , socat chama o script nc-ssh-socks , que eventualmente é executado em nc localhost portB :
socat TCP-LISTEN:portA,fork EXEC:"nc-ssh-socks server portB"
O script também garante que exista um processo ssh que fornece o proxy SOCKS em localhost:portB :
cmd="ssh -fND $2 $1"
pgrep -u $USER -fx "$cmd" || $cmd
exec nc localhost $2
No entanto, o esquema não funciona, continuo recebendo erros de socat -ddddd do formulário:
W read(6, 0x1bf5360, 8192): Connection reset by peer
W waitpid(): child 25032 exited with status 1
E write(6, 0x1bf5360, 2): Broken pipe
Estranhamente, ocasionalmente vejo partes de uma página aparecendo no navegador, mas não sei se isso é devido ao armazenamento em cache ou porque algumas conexões funcionam, mas a maioria não o faz.
Alguém sabe o suficiente sobre socat , nc e ssh para entender por que isso não está funcionando?
Durante a depuração, aumente sua visibilidade removendo -fN do comando ssh e adicione -vvv a para informações de depuração. Isso só lhe dará informações do lado do cliente, mas pode lhe dizer mais.
Tags ssh netcat socat socks-proxy