서버의 제한된 네트워크에 대한 역방향 SSH 터널을 설정했습니다 aws
. 즉, 액세스하기 위해 서버에 SSH를 통해 연결 aws
하고 거기에서 일부 사용자 지정 포트를 통해 제한된 네트워크에 있는 컴퓨터에 액세스할 수 있습니다.
이 제한된 네트워크에는 웹 브라우저를 통해 구성할 수 있는 장치가 있습니다.
컴퓨터 ssh -R 8080:deviceIP:80 user@aws
로 전달하는 것과 같은 작업을 수행할 수 있다고 확신 하지만 여전히 액세스할 수 없습니다(원격 X를 통하는 경우를 제외하고는 매우 느립니다). 홈 브라우저로 aws
어떻게 파이프합니까 ?deviceIP:80
aws
위의 ssh 명령을 시도한 다음 집 컴퓨터의 브라우저를 다음으로 지정했지만 aws:8080
페이지가 로드되지 않았습니다...
답변1
SSH 터널은 보안되지 않은 네트워크를 확장하는 데 유용하며 서로 다른 네트워크에 있는 두 끝점을 연결할 때 종단 간 암호화를 제공합니다.
내가 아는 한(의견 감사합니다) 당신이 가지고 있는 것은 다음과 같습니다:
localhost-A: yours
localhost
, 로컬 네트워크(아마도 방화벽/NAT 뒤에 있음)공개적으로 액세스 가능한 호스트-B:
aws
서버공개적으로 액세스할 수 없는 호스트-C: 제한된 원격 네트워크(방화벽/NAT 뒤일 수 있음)
deviceIP
공개적으로 접근할 수 없는 호스트-D: 포트에서 수신 대기80
하고 원격으로 제한된 네트워크에 있는 호출하는 호스트
호스트 A를 호스트 D에 연결하고 브라우저가 포트를 통해 호스트에 액세스할 수 있도록 하려면 다음을 80
수행해야 합니다.
호스트 A에서 호스트 B로 터널링합니다. 즉, 다음과 같습니다.
호스트 A가 포트에서 수신하도록 허용
8080
터널을 통해 이 포트에서 트래픽을 보냅니다.
호스트 B(
aws
)에서 터널의 트래픽을 로컬(예: 호스트 B) 포트로 리디렉션합니다15872
(귀하의 의견에서 가져왔습니다. 사용 가능한 포트를 선택할 수 있습니다. 모든 포트에서 동일하게 사용하도록 하세요. 포트는 다음과 같습니다. ) 명령)
# Execute on host-A $ ssh -L 8080:localhost:15872 user@host-B
호스트 C에서 호스트 B로 터널링합니다. 즉, 다음과 같습니다.
호스트 B가 포트에서 수신하도록 허용
15872
터널을 통해 이 포트에서 트래픽을 보냅니다.
호스트 C(Linux 서버)에서 해당 트래픽을
80
호스트 D의 포트 로 리디렉션합니다.
# Execute on host-C $ ssh -R *:15872:host-D:80 user@host-B
따라서 호스트 A에 대한 포트의 요청은 8080
호스트 B로 터널링되고, 15872
동일한 호스트 B의 포트로 리디렉션되고, 호스트 C로 터널링되고, 호스트 C에서 80
호스트 D의 포트로 리디렉션됩니다.
답변2
웹 서버를 브라우저로 리디렉션하지 않고 브라우저에서 웹 서버로 요청을 리디렉션합니다. 필요한 역방향 프록시가 아닌 순방향 프록시입니다.
그러면 클라이언트 포트 8080에 청취 소켓이 생성되고 터널을 통해 포트 80 ssh
으로 전달됩니다.deviceIP
ssh -L 8080:deviceIP:80 user@aws