![SSH를 통한 명명된 파이프 프록시 [닫기]](https://linux55.com/image/74553/SSH%EB%A5%BC%20%ED%86%B5%ED%95%9C%20%EB%AA%85%EB%AA%85%EB%90%9C%20%ED%8C%8C%EC%9D%B4%ED%94%84%20%ED%94%84%EB%A1%9D%EC%8B%9C%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
저는 SSH를 사용하여 localhost에서 원격 서비스 포트를 전달하는 데 익숙합니다. 예를 들면 다음과 같습니다.
ssh -L 2181:localhost:2182 user@server
(원격 호스트 포트 2182를 로컬 포트 2181로 전달)
이제 ssh 대상 머신에서 TCP 서비스에 액세스하고 응답을 로컬 머신으로 전달하려고 합니다.
local-machine:2181 <-- SSH --> remote-machine:2182 <-- netcat/named pipe --> service:2181
참고: 서비스 시스템에 직접 액세스할 수는 없으며 SSH를 통해서만 네트워크에 액세스할 수 있습니다.
명명된 파이프와 함께 netcat을 사용하려고 합니다.
원격 시스템에서:
mkfifo fifo
nc -k -l 2182 <fifo | nc service 2181 >fifo
로컬 머신에서:
echo message | nc localhost 2181
그러나 이것은 작동하지 않는 것 같습니다.
나는 또한 원격 컴퓨터에서 시도했다.
nc -k -l 2182 0<fifo | nc service 2181 1>fifo
불운
nc -k -l 2182
로컬 컴퓨터에서 보낸 메시지를 원격 컴퓨터에 출력합니다: 2181
간단히 파이프하면 nc -k -l 2182 | nc service 2181
원격 시스템의 서비스 응답이 표시됩니다. 따라서 서비스에 계속 액세스하고 원격 시스템으로 돌아갈 수 있지만 거기에서 멈춰 있습니다.
local-machine:2181 <-/- SSH --> remote-machine:2182 <-- netcat --> service:2181
그래서 명명된 파이프가 SSH 연결을 통해 내 로컬 컴퓨터로 응답을 다시 전달하지 않는 이유를 이해할 수 없습니다.
echo message | nc localhost 2182
원격 시스템의 명령은 로컬 시스템에 아무것도 출력하지 않으므로 어떤 이유로 SSH를 통해 작동하지 않습니다.
이것이 왜 발생하는지, 어떻게 해결하는지 아시나요?
도와 주셔서 감사합니다.
답변1
@ysdx가 지적했듯이
간단한 해결책은 다음과 같습니다.
ssh -L 2181:service:2182 user@server