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.serveroupython2 -m SimpleHTTPServerem 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á
ncouvindo 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!