SSH 터널을 통해 제한된 네트워크의 웹사이트를 리디렉션하는 방법

SSH 터널을 통해 제한된 네트워크의 웹사이트를 리디렉션하는 방법

서버의 제한된 네트워크에 대한 역방향 SSH 터널을 설정했습니다 aws. 즉, 액세스하기 위해 서버에 SSH를 통해 연결 aws하고 거기에서 일부 사용자 지정 포트를 통해 제한된 네트워크에 있는 컴퓨터에 액세스할 수 있습니다.

이 제한된 네트워크에는 웹 브라우저를 통해 구성할 수 있는 장치가 있습니다.

컴퓨터 ssh -R 8080:deviceIP:80 user@aws로 전달하는 것과 같은 작업을 수행할 수 있다고 확신 하지만 여전히 액세스할 수 없습니다(원격 X를 통하는 경우를 제외하고는 매우 느립니다). 홈 브라우저로 aws어떻게 파이프합니까 ?deviceIP:80aws

위의 ssh 명령을 시도한 다음 집 컴퓨터의 브라우저를 다음으로 지정했지만 aws:8080페이지가 로드되지 않았습니다...

답변1

SSH 터널은 보안되지 않은 네트워크를 확장하는 데 유용하며 서로 다른 네트워크에 있는 두 끝점을 연결할 때 종단 간 암호화를 제공합니다.

내가 아는 한(의견 감사합니다) 당신이 가지고 있는 것은 다음과 같습니다:

  • localhost-A: yours localhost, 로컬 네트워크(아마도 방화벽/NAT 뒤에 있음)

  • 공개적으로 액세스 가능한 호스트-B: aws서버

  • 공개적으로 액세스할 수 없는 호스트-C: 제한된 원격 네트워크(방화벽/NAT 뒤일 수 있음)

  • deviceIP공개적으로 접근할 수 없는 호스트-D: 포트에서 수신 대기 80하고 원격으로 제한된 네트워크에 있는 호출하는 호스트

호스트 A를 호스트 D에 연결하고 브라우저가 포트를 통해 호스트에 액세스할 수 있도록 하려면 다음을 80수행해야 합니다.

  1. 호스트 A에서 호스트 B로 터널링합니다. 즉, 다음과 같습니다.

    • 호스트 A가 포트에서 수신하도록 허용8080

    • 터널을 통해 이 포트에서 트래픽을 보냅니다.

    • 호스트 B( aws)에서 터널의 트래픽을 로컬(예: 호스트 B) 포트로 리디렉션합니다 15872(귀하의 의견에서 가져왔습니다. 사용 가능한 포트를 선택할 수 있습니다. 모든 포트에서 동일하게 사용하도록 하세요. 포트는 다음과 같습니다. ) 명령)

    # Execute on host-A
    $ ssh -L 8080:localhost:15872 user@host-B
    
  2. 호스트 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

관련 정보