SSH 포트 포워딩을 사용하시는 분들이나 아이디어가 있으신 분들을 위해 (공용 주소가 있는) SSH 서버를 통해 내 PC에서 원격 컴퓨터(공용 주소가 없는 카메라)로의 원격 터널을 만들어 봤습니다.
목표는 SSH 원격 포트 전달을 통해 카메라에 대한 액세스를 대중에게 전달하는 것입니다.
내 컴퓨터에서 실행하는 명령의 형식은 다음과 같습니다.
ssh -R sshServer_port:destination_address:destination_port sshServer_address
예:
ssh -R 3000:192.198.1.210:80 [email protected]
sshServer에서는 localhost:3000을 통해 원격 시스템에 액세스할 수 있습니다.
그런 다음 다음을 사용하여 공개적으로 액세스할 수 있도록 tcpproxy를 설정했습니다.
tcpproxy -lhost 0.0.0.0:8080 -rhost localhost:3000
이렇게 하면 모든 네트워크의 누구나 52.14.9.210:8080을 입력하여 카메라 인터페이스에 액세스할 수 있습니다.
내가 원하는 것은 두 개의 원격 시스템 포트(http의 경우 80, 라이브 스트리밍의 경우 8000)에서 수신 대기하는 터널을 만드는 것입니다. 명령 형식은 다음과 같습니다.
ssh -R sshServer_port:destination_address:destination_port1 -R sshServer_port:destination_address:destination_port2 sshServer_address
예:
ssh -R 3000:192.168.1.210:80 -R 3000:192.168.1.210:8000 [email protected]
명령을 실행하려고 시도했지만 다음 오류가 발생했습니다. 경고: 포트 3000에서 수신 대기하는 원격 포트 전달에 실패했습니다.
이 문제를 해결하는 방법을 알고 있나요?
답변1
원하는 것은 두 개의 원격 컴퓨터 포트를 수신하는 하나의 터널을 생성하는 것이 아니라 동일한 원격 포트에서 수신하는 두 개의 터널을 원하는 것입니다.
그것은 불가능합니다. SSH는 들어오는 연결이 어떤 포트로 전달되어야 하는지 어떻게 알 수 있습니까?
프로토콜을 차별화하기 위한 몇 가지 솔루션이 있지만 보편적인 솔루션은 없습니다. http 트래픽에 포트 80을 사용하는 경우 역방향 프록시를 설정할 수 있지만 두 대상에 대해 두 개의 서로 다른 포트를 사용하는 것이 훨씬 쉽습니다.
편집하다
-g
귀하의 의견에 따르면 다른 호스트가 터널에 연결하도록 허용하는 SSH 옵션이 누락된 것 같습니다 .
답변2
ralffriedl의 팁 덕분에 문제를 해결했습니다.
1단계: 포트 80의 카메라 주소와 포트 2233의 SSH 서버 사이에 첫 번째 원격 포트 전달 터널을 만든 다음 SSH 서버의 localhost:2233과 포트의 서버 공용 IP 주소(52.214.9.211) 사이에 tcpproxy를 설정했습니다. 4455
2단계: 포트 8000의 카메라 주소와 포트 2255의 SSH 서버 사이에 두 번째 원격 포트 전달 터널을 만든 다음 SSH 서버의 localhost:2255와 포트의 서버 공용 IP 주소(52.214.9.211) 사이에 tcpproxy를 설정했습니다. 8000
이렇게 하면 외부 네트워크의 누군가가 브라우저에 서버 IP 주소를 입력하고 카메라 IP 주소의 포트 80의 포워딩 포트, 즉 (52.214.9.211:4455)를 추가하면 카메라에 접속할 수 있습니다. 포트 8000에서 완료 라이브 방송 요청이 이루어지면(예: (52.214.9.211:8000)) 서버의 localhost:2255로 전달된 다음 카메라의 포트 8000으로 전달됩니다.