Parece-me que você precisa de um cliente socks ou de um cliente ssh que entenda socks. -D
é para o ssh ser um servidor / proxy de meias.
Você pode usar ssh em tsocks
ou outro wrapper SOCKS. Ou use o ProxyCommand do ssh em conjunto com socat
ou nc -X
:
ssh -o ProxyCommand='socat - socks:B:%h:21,socksport=1080' C
Para ter um proxy HTTP que usa o servidor SOCKS para enviar solicitações HTTP, você pode executar um proxy pequeno (como tinyproxy
) em tsocks.
Observe que nem todos os aplicativos funcionam muito bem com tsocks
ou qualquer wrapper semelhante que dependa de LD_PRELOAD
, mas tinyproxy
faz.
Observe também que você pode ter problemas com a resolução do nome de domínio (dependendo se você deseja que os nomes sejam resolvidos em ambos os lados do túnel). tsocks
não funciona bem para resolver nomes remotamente. A única maneira que pode funcionar é quando o seu servidor de nomes (em /etc/resolv.conf
) é alcançável do outro lado e você está usando TCP para resolução de domínio (que tsocks
pode tentar impor mas geralmente falha na minha experiência). socksify
do cliente / servidor SOCKS de dante
funciona melhor nessa instância, pois também envolve a resolução de funções e também pode usar um pequeno truque para falsificar a resolução de nomes, para que as conexões SOCKS por nome possam ser usadas.