여러 포트를 사용한 SSH 원격 포트 전달

여러 포트를 사용한 SSH 원격 포트 전달

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으로 전달됩니다.

관련 정보