Como encaminhar uma porta para outra usando ssh ou qualquer outra ferramenta?

3

Eu tenho um aplicativo legado atendendo na porta 5050 ligada à interface do host local (por exemplo, 127.0.0.1). Este aplicativo é executado em uma caixa Linux (um sistema embarcado). Eu tenho um aplicativo, vamos chamá-lo App C que roda no PC e gostaria de se conectar a ele. Mas não pode como o aplicativo legado não aceita conexões de fora da caixa. Não tenho a opção de alterar o código-fonte do aplicativo legado.
Existe uma maneira de executar algo como o ssh para escutar na porta 7070 na caixa incorporada e encaminhar o tráfego de entrada para a porta 5050? Eu sei que ssh permite isso. Mas espera conexões do tipo SSL do lado de fora. Eu estou querendo saber se ele pode ser lançado apenas para fazer o encaminhamento de porta sem qualquer tipo de coisa de túnel ssl. Algo como o proxy SOCKS.

Sinta-se à vontade para sugerir outras ferramentas, se você conhece alguém que faz o trabalho.

    
por videoguy 06.09.2011 / 16:15

4 respostas

3

Você também pode configurar xinetd para fazer isso:

Defina um novo serviço em execução na porta 7070 e configure-o usando o redirecionamento (de man xinetd.conf )

redirect Allows a tcp service to be redirected to another host. When xinetd receives a tcp connection on this port it spawns a process that establishes a connection to the host and port number specified, and forwards all data between the two hosts.
    
por 06.09.2011 / 18:03
2

O SSH pode fazer o que você quiser. Consulte A página do manual do SSH , especificamente as opções -L e -R ( -L cria um ouvinte na máquina L ocal, encaminhando para algo na máquina / rede remota. -R cria um ouvinte no encaminhamento lateral R emote para algo na máquina / rede local.

As portas encaminhadas com -L ou -R não exigem nenhum protocolo específico de handshake - o encaminhamento é transparente para os aplicativos que se conectam a essa porta, embora o canal seja criptografado por SSH.

    
por 06.09.2011 / 16:22
1

Deve ser possível. Experimente com

ssh -R *: 7070:localhost:5050 -N host.example.com
    
por 06.09.2011 / 16:34
0

Eu encontrei rinetd que pode fazer isso facilmente. O SSH espera que o sshd em algum lugar estabeleça um encapsulamento criptografado através do qual as conexões de entrada sejam conectadas. O rinetd é muito bom, pois não tem dependências de outras entidades. Apenas faz o encaminhamento de porta.

    
por 08.09.2011 / 16:03