Considere a seguinte situação:
Na minha casa, tenho um roteador (conectado à Internet), servidor (S) e minha máquina principal (M). S é acessível pela Internet (possui IP estático) e funciona 24/7, enquanto M não.
Às vezes, desejo tornar algum aplicativo (que escute em alguma porta do M, por exemplo, 8888) acessível a partir da Internet externa.
Para isso, queria configurar alguma porta no S (2222) para encaminhar para a porta 8888 de M, para que qualquer pessoa que estivesse acessando o S: 2222 sentisse que estava acessando o M: 8888.
Tentei usar o encaminhamento de porta ssh, minha melhor tentativa foi a seguinte:
ssh -L 2222:M:8888 -N M
Mas isso só me permite acessar a porta 2222 do próprio servidor, não de outras máquinas.
Existe alguma maneira de fazer isso corretamente? De preferência, gostaria que fosse um comando simples, que pudesse iniciar e desligar com ^ C quando não precisar mais desse encaminhamento.
fonte
Respostas:
Sim, isso é chamado
GatewayPorts
no SSH. Um trecho dessh_config(5)
:E você pode usar em
localhost
vez deM
encaminhar, pois está encaminhando para a mesma máquina com a qual faz o SSH - se eu entendi sua pergunta corretamente.Então, o comando se tornará este:
e ficará assim em
netstat -nltp
:Agora, qualquer pessoa que acesse esta máquina na porta 2222 TCP realmente conversará com o host local: 8888 como visto na máquina M. Observe que isso não é o mesmo que encaminhamento simples para a porta 8888 de M.
fonte
netstat
comando para descobrir exatamente o que. Provavelmente outro SSH semelhante ainda está sendo executado em segundo plano e o mata usando o netstat do PID.Existe outro caminho. Você pode configurar o encaminhamento de porta de S: 2222 para W: 8888 com iptables. Comando único:
onde 1.2.3.4 é o endereço IP de M. É chamado NAT (Network Address Translation).
fonte
Mais alternativas:
netcat
(tradicional) ousocat
No servidor (S):
ou
Os detalhes estão disponíveis em: Maneira simples de criar um túnel de uma porta local para outra?
fonte