Eu finalmente consegui fazer isso com ssh
apenas:
- inicie um proxy SOCKS local na sua máquina cliente (usando
ssh -D
) - conecte-se ao servidor remoto e configure um encaminhamento reverso de porta (
ssh -R
) para seu proxy SOCKS local - configure o software do servidor para usar o proxy encaminhado
1. Iniciar proxy de meias locais
Conecte-se ao host local via SSH e abra o proxy SOCKS na porta 54321.
$ ssh -f -N -D 54321 localhost
-f
executa o SSH em segundo plano.
2. conectar-se ao servidor remoto e configurar o encaminhamento de porta reversa
Vincule a porta remota 6666 à porta local 54321. Isso disponibiliza o proxy de meias local para o site remoto na porta 6666.
$ ssh root@target -R6666:localhost:54321
3. configurar o software do servidor para usar o proxy encaminhado
Basta configurar o yum, apt, curl, wget ou qualquer outra ferramenta que suporte o SOCKS para usar o proxy 127.0.0.1:6666
.
Voilá! Tunelamento feliz!
4. opcional: configure o software do servidor para usar o proxy encaminhado
Descobri que a instalação do proxychains
no servidor de destino facilita muito as coisas.
Ele permite que qualquer software use o proxy SOCKS (até telnet
), usando um truque LD_PRELOAD
para redirecionar solicitações TCP e DNS de comandos arbitrários para um proxy.
Configure /etc/proxychains.conf
para usar o proxy de meias encaminhadas:
[ProxyList]
# SSH reverse proxy
socks5 127.0.0.1 6666
Ferramentas arbitrárias de túnel (que usam TCP) com proxychains
:
$ proxychains telnet google.com 80
$ proxychains yum update
$ proxychains apt-get update