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
로 전달됩니다 .4444
remotehost.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
도움이 되길 바랍니다.