Este é o comando para o computador laranja :
ssh -N -R:<chosen-port>:10.0.0.101:<web-app-port> -p <blue-ssh-port> <blue-user>@<blue-public-ip>
(Como fazer com que ele sobreviva ao seu logout do laranja - é um problema separado. / a>; ou tmux
/ screen
, disown
ou nohup
com script personalizado.)
O comando acima torna o servidor SSH no blue escutar no (TCP) <chosen-port>
de sua escolha na interface de loopback. As conexões de entrada serão encapsuladas para o laranja e enviadas para 10.0.0.101:<web-app-port>
(ou seja, o vermelho ) a partir dali. Isso cria um túnel sem executar um comando nem shell no azul (graças à opção -N
).
Existe uma maneira de fazer o azul escutar na interface do outro (não-loopback), mas não é recomendado por causa da segurança; esta opção pode até ser desativada em azul (explicado em man ssh
, -R
opção).
Para alcançar a interface de loopback blue da sua máquina doméstica verde , use outro túnel. Em verde :
ssh -N -L:<chosen-port-2>:127.0.0.1:<chosen-port> -p <blue-ssh-port> <blue-user>@<blue-public-ip>
Agora você deve ser capaz de alcançar o vermelho do verde usando o endereço:
127.0.0.1:<chosen-port-2>
<chosen-port>
e <chosen-port-2>
podem ou não ser o mesmo número, isso realmente não importa. O que importa é que você deve escolher portas altas (de 1024 a 65535).
A diferença entre -L
e -R
tunnels:
-
-L
escuta no lado local, ou seja, quando você invocassh
; -
-R
escuta no lado remoto, ou seja, onde você está emssh
.
Sabendo disso, você deve ser capaz de rastrear o que acabamos de fazer. Note que nós criamos os túneis se movendo em direção ao verde porque (para mim) parecia mais lógico funcionar dessa maneira. Sua conexão irá do verde , então vamos traçar toda a rota nessa direção. É o seguinte:
- O cliente SSH no verde escuta
127.0.0.1:<chosen-port-2>
por causa do segundo túnel. - Encaminha os pacotes para o servidor SSH no blue , que os envia para
127.0.0.1:<chosen-port>
. Da perspectiva azul , estes são pacotes locais gerados pelo servidor SSH. - O mesmo servidor SSH escuta nessa porta devido ao primeiro túnel. O servidor pega os pacotes e os encaminha para o laranja .
- O cliente SSH na laranja envia os pacotes para o vermelho . Da perspectiva vermelho os pacotes são do laranja , ele não sabe nada sobre o azul nem sobre o verde . / li>