Confirmei que isso funcionou com algumas VMs:
[A]$ ssh -tt -v -L8888:localhost:8157 user@B ssh -t -D 8157 user@C
De A , você abre um túnel de encaminhamento de porta de 8888 localmente para 8157 em B -L8888:localhost:8157
. Depois de estabelecer uma conexão com B, o comando remoto ssh -t -D 8157 user@C
é executado, o que fornece o seu proxy SOCKS através de C . Pelo que li, '-t' parece ser necessário, embora eu ainda tenha que descobrir o porquê.
Note que este é um comando no primeiro host que invoca ssh duas vezes, de A- > B e em B- > C . Você também pode dividir isso em comandos separados, conforme descrito abaixo.
Bônus: para encadear três proxies ...
Ou seja, A->B->C->D->Internet
[hostA]$ ssh -2 -C -D 55557 -L 55556:127.0.0.1:55556 -L 55555:127.0.0.1:55555 user@B
[hostB]$ ssh -2 -C -D 55556 -L 55555:127.0.0.1:55555 user@C
[hostC]$ ssh -2 -C -D 55555 user@D
Observe que, para cada salto, você precisa de um encaminhador de correspondência adicional -L
nos hosts anteriores da cadeia.
Referências:
- túnel ssh por meio de vários saltos
- Esta postagem mostra como encadear um número arbitrário de proxies: link
- O modelo para esta solução: link
- Como posso usar o SSH com um SOCKS 5 proxy?
- link