netcat / proxy de canal nomeado sobre ssh

1

Estou acostumado a encaminhar uma porta de serviço remoto em localhost usando ssh como:

ssh -L 2181:localhost:2182 user@server (encaminhar a porta do host remoto 2182 para a porta local 2181)

agora, da máquina em que estou ssh, estou tentando acessar um serviço tcp e encaminhar a resposta para minha máquina local:

local-machine:2181 <-- SSH --> remote-machine:2182 <-- netcat/named pipe --> service:2181

Nota: Eu não tenho acesso direto à máquina de serviço, só tenho acesso à rede através da máquina I SSH para.

Eu estava tentando usar o netcat com um pipe nomeado:

Na máquina remota:

mkfifo fifo
nc -k -l 2182 <fifo | nc service 2181 >fifo

Na máquina local: echo message | nc localhost 2181

mas isso não parece funcionar.

Eu também tentei, na máquina remota nc -k -l 2182 0<fifo | nc service 2181 1>fifo

sem sorte

Na máquina remota nc -k -l 2182 envia a mensagem que eu mando da máquina local: 2181

se eu simplesmente enviar isso como: nc -k -l 2182 | nc service 2181 Eu vejo a resposta do serviço na máquina remota. Então, eu sou capaz de ir até o serviço e voltar para a máquina remota, mas para lá:

local-machine:2181 <-/- SSH --> remote-machine:2182 <-- netcat --> service:2181

então eu não entendo porque o pipe nomeado não encaminhará a resposta através da conexão ssh de volta para minha máquina local.

echo message | nc localhost 2182 na máquina remota NÃO imprime nada na máquina local, por isso não está passando pelo SSH por algum motivo.

Alguma ideia do motivo e como corrigi-lo?

Obrigado pela ajuda.

(EDITADO para maior clareza) Nota: Eu preciso disso porque só posso SSH para uma máquina, que é parte de um cluster, e essa máquina tem acesso ao (s) serviço (s). Eu não quero expor o serviço para o exterior, nem ter um SSHD em cada contêiner de serviço.

    
por MrE 06.10.2015 / 09:32

2 respostas

1

Eu fui apontado para o fato de que alguém pode simplesmente fazer

ssh -L 2181:service:2181 user@remote-machine

para encaminhar a conexão para service de remote-machine para a porta em local-machine .

simples e eficiente.

    
por 06.10.2015 / 21:19
0

Você pode usar -R para essa finalidade:

ssh -R 8080:127.0.0.1:7070 yourhost

Isto irá abrir uma porta no seu host: 7070 que encaminha para localhost: 8080

Documentação diz

[-R [bind_address:]port:host:hostport]
    
por 26.05.2016 / 10:45