로컬 호스트의 포트를 일부 원격 호스트로 전달: 포트

로컬 호스트의 포트를 일부 원격 호스트로 전달: 포트

Remotehost.some.where:4444에서 실행 중인 서버가 있다고 가정해 보겠습니다. localhost:5555에 연결하도록 요구하는 소프트웨어가 있습니다. 다음 ssh과 같이 전달할 수 있습니다 .

ssh -L 5555:remotehost.some.where:4444 myuser@localhost

그러나 이를 위해서는 localhost에 대한 불필요한 SSH 연결이 필요하며, 추가해도 이를 -N방지할 수는 없습니다. 로그인하지 않고(아마도 다른 도구를 사용하여) 이 포트 전달을 수행하려면 어떻게 해야 합니까?

답변1

가장 간단한 해결책은 일종의 TCP 프록시를 실행하는 것입니다. 예를 들어 다음과 같이 사용할 수 있습니다 socat.

socat tcp-listen:5555,bind=127.0.0.1,fork tcp:remotehost.some.where:4444

실행 중일 때 localhost의 포트에 대한 연결은 localhost의 포트 5555로 전달됩니다 .4444remotehost.some.where

여기서 사용하는 명령은 수신만 수행합니다 127.0.0.1. 해당 포트의 다른 호스트로부터의 연결을 실제로 수락하려면 5555해당 옵션을 제거하면 됩니다 bind=127.0.0.1.

답변2

이를 수행하는 방법에는 여러 가지가 있습니다.

1) GNU/Linux라면 iptables이렇게 하세요.

2) 정말로 SSH를 사용하고 싶다면 RSA 키 쌍을 생성하여 ~./ssh/authorized_keys 파일에 복사하고 명령을 반복하여 해당 -N옵션을 추가하세요.

3) Debian 또는 Debian 기반 배포판을 사용하는 경우 redir.

4) 다음을 사용하여 이 작업을 수행할 수도 있습니다 socat.

socat TCP4-LISTEN:80,fork TCP4:www.yourdomain.org:8080

도움이 되길 바랍니다.

관련 정보