Software para conexões de soquete proxy através de um link tipo TTY

1

Estou procurando por algum software que possa realizar o encaminhamento remoto de conexões de soquete através de um link no estilo TTY. Eu tenho duas máquinas, A e B. Eu tenho privilégios de administrador em A, mas não B, mas na máquina B eu sou capaz de executar software de servidor arbitrário que não requer admin. A máquina A não tem um endereço IP público, mas a máquina B tem. Eu sou capaz de configurar uma conexão de saída da máquina A para a máquina B e transferir dados arbitrários através dela, mas o que eu preciso é de algum software que eu possa executar na máquina B que aceite uma conexão de entrada, envie os dados dessa conexão para um processo em execução na máquina A, que então iniciará uma nova conexão com um servidor em execução na máquina A.

Infelizmente, não consigo usar o ssh para essa finalidade, pois ele foi configurado pelo administrador da máquina B para não permitir o encaminhamento. Caso contrário, executar ssh -R 4567:localhost:1234 machineb da máquina A atingiria o que estou procurando.

Alguém sabe de outra maneira de fazer isso? Para referência, a máquina A executa o Ubuntu Linux e a máquina B executa o OpenBSD, embora eu prefira uma solução portátil em todas as variantes unix.

    
por Jules 29.10.2012 / 07:07

1 resposta

1

Você pode usar socat para fazer o trabalho. Você precisa de socat instalado na máquina A e nc ( netcat ) na máquina B ( socat também funcionará). A seguir, há um exemplo sobre como lidar com uma conexão TCP (você pode ler socat documentação para saber como lidar com mais e personalizar o comportamento).

Você deve executar na máquina A:

  • O serviço que você deseja expor na máquina B, digamos, um servidor da Web na porta 8000 (você pode testá-lo executando python3 -m http.server ou python2 -m SimpleHTTPServer em qualquer diretório que você queira expor os arquivos);
  • socat para redirecionar entre STDIO e uma conexão SSH para B. Esta conexão SSH para B executará nc ouvindo uma porta específica.

Portanto, execute em uma sessão de terminal na máquina A:

python3 -m http.server

E em outra sessão de terminal na máquina A:

socat EXEC:'ssh user@machineb "nc -l -p 8888"' TCP4:localhost:8000

Se socat também estiver disponível na máquina B, você poderá substituir nc :

socat EXEC:'ssh user@machineb "socat STDIO TCP-LISTEN:8888,reuseaddr"' TCP4:localhost:8000

Explicando o conceito: socat redirecionará qualquer stdin / stdout do comando ssh user@machineb "socat STDIO TCP-LISTEN:8888,reuseaddr" para uma conexão de cliente TCP em localhost:8000 ( TCP4:localhost:8000 ). O comando executará a conexão SSH na máquina B e executará socat lá, o que redirecionará qualquer coisa que se conectar à porta 8888 localmente na máquina B ( TCP-LISTEN:8888,reuseaddr ) para a stdin / stdout ( STDIO ).

Sim, o socat é incrível!

    
por 10.08.2016 / 01:50