Isso é um pouco diferente das outras perguntas do SSH que eu vi aqui, então aqui vai. Eu tenho uma configuração complexa para acessar um aplicativo da web e, infelizmente, não há maneira de contornar isso. Aqui está o cenário e os sistemas envolvidos (endereços IP anonimizados por razões óbvias):
System Alpha
System Bravo
System Charlie
System Delta
Eu preciso me comunicar com um site disponível para o System Delta do System Alpha. O problema é que não consigo falar diretamente com o System Delta. Atualmente, posso usar o SSH no System Bravo e posso usar o SSH no System Charlie utilizando um comando de proxy que utiliza o System Bravo como proxy. Para ilustrar isso, aqui está o meu SSH Config:
Host system.bravo
User bob
Hostname 1.1.1.1
ForwardAgent yes
Host system.charlie
User bob
ForwardAgent yes
ProxyCommand ssh -q system.bravo nc localhost 1081
O System Charlie está acessível para o System Alpha desta forma porque criou um túnel SSH reverso para o System Bravo na porta 1081. Isso é feito porque o firewall entre o System Bravo e o System Charlie SOMENTE permite a saída do SSH para o System Bravo. Eu sei que isso é chato, mas é uma exigência do cliente.
O System Charlie pode executar o SSH no System Delta sem problemas. Meu problema é, como faço para configurar um proxy SOCKS utilizável com SSH, para que o System Alpha possa acessar um site acessível somente a partir do System Delta. Normalmente eu faria assim:
ssh -2 -C -D 4001 -L 4002:localhost:4002 -L 4003:localhost:4003 [email protected]
ssh -2 -C -D 4002 -L 4003:localhost:4003 [email protected]
ssh -2 -C -D 4003 [email protected]
Então eu simplesmente apontaria o Firefox para localhost: 4003 e esse seria o meu proxy de trabalho para acessar o site. No entanto, por causa da configuração estranha entre System Bravo e System Charlie isso não funcionará. *** Foi indicado para mim que um diagrama exibindo comunicações tornaria isso mais fácil. Então aqui está:
A full list of possible connections:
-----> --X--> ----->
Alpha Bravo Charlie Delta
<--X-- <----- <--X--
The connection between Alpha and Bravo and Charlie as it is currently
configured:
ProxyCommand ssh -q system.bravo nc localhost 1081
-------------------------------------------------->
Alpha Bravo <---------------------------------------- Charlie
AUTOSSH -R 1081:localhost:22
-----> = An allowed connection via SSH
--X--> = A blocked connection, only reverse SSH possible
Alguém tem uma solução sobre como eu posso realizar isso tendo em mente o comando de proxy necessário e o túnel SSH reverso entre System Bravo e System Charlie?
Muito obrigado
PS: Espero que meu diagrama ajude, lamento que não seja uma imagem real