Tenho um dispositivo conectado à Internet, mas ele está atrás de um NAT, o que significa que não consigo fazer ssh diretamente nele de fora da rede. Já descobri que o tunelamento SSH reverso pode contornar esse problema.
Agora quero executar um processo de servidor netcat neste dispositivo, acessível novamente de fora da rede. Como eu faria isso?
Responder1
Eu consegui descobrir isso sozinho. Parece que o tunelamento SSH é basicamente encaminhamento de porta. Executei o seguinte código no servidor atrás do NAT
ssh -N -R 4321:localhost:1234 user@client &
isso configura o túnel que roteia o tráfego de client:4321
para server:1234
, para &
executá-lo em segundo plano. Ainda no servidor, executei:
ncat -lk -c "python myscript.py" localhost 1234 &
que inicia a execução do processo netcat myscript.py
. Agora posso me conectar ao servidor do meu cliente via netcat
nc localhost 4321
(Eu não tinha ncat
no meu cliente, mas nc
também funcionou. Meu caso de uso real foi usar a socket
biblioteca em python para conectar, que funcionou da mesma forma)