ssh -R 터널링 없이 원격 포트 전달을 위해 ssh+socat 사용

ssh -R 터널링 없이 원격 포트 전달을 위해 ssh+socat 사용

다음과 같이 SSH의 원격 포트 터널을 사용하여 원격 호스트와 로컬 호스트 간의 연결을 생성할 수 있다는 것을 알고 있습니다.

ssh -fN user@remote -R remote_port:localhost:local_port

명시적인 -R 없이 위의 작업을 수행하고 싶습니다. 예를 들어...

ssh -f user@remote "script.sh ${local_port}"

그중 script.sh는 아래와 같이 포트 전달을 위해 socat를 호출합니다.

socat TCP-LISTEN:<some_port_determined_in_script>,fork,reuseaddr TCP:ssh_client:ssh_client_port

그러나 이것은 작동하지 않습니다. 내가 뭐 놓친 거 없니?

기본적으로 클라이언트가 클라이언트 포트만 결정하고 리모콘이 사용할 포트를 결정하도록 하길 원합니다.

답변1

-R 옵션을 사용하지 않으면 모든 데이터는 다른 연결(Socat 분기)에 관계없이 일반 SSH 채널을 통과합니다. 따라서 첫 번째 예와 같이 -R 옵션을 사용하고 다음과 같이 원격 로컬 호스트에서만 Socat 전달 포트를 사용하는 것이 좋습니다.

socat TCP-LISTEN:<some_port_determined_in_script>,fork,reuseaddr TCP:localhost:remote_port

관련 정보