명령을 사용하여 SSH 로컬 포트 전달을 활성화했습니다 ssh -NL 8080:whatsmyip.org:80 <remote-sshd-machine>
. 이제 Firefox를 열고 로 이동하면 http://127.0.0.1:8080
웹페이지가 열리지 않습니다. 그러나 Firefox 네트워크 설정 메뉴에서 HTTP 프록시 127.0.0.1
와 포트를 구성하면 8080
웹 페이지가 열리고 whatsmyip.org는 예상대로 원격 SSH 서버 IP 주소를 보고합니다. 제대로 작동하려면 브라우저에서 프록시 설정을 구성해야 하는 이유는 무엇입니까?
답변1
원격 SSH 서버를 브라우저의 SOCKS 프록시로 사용하려는 경우 찾고 있는 ssh 명령은 다음과 같습니다.
ssh -N -D8080 <remote-sshd-machine>
그러면 로컬 호스트 TCP 포트 8080에서 SOCKSv4/5 프록시가 시작됩니다. 이를 통해 원격 SSH 서버의 IP 주소를 사용하여 모든 웹 사이트를 탐색할 수 있습니다. 단, localhost를 통해 원격 사이트(예: whatsmyip.org)에 접속하려는 경우에는 다음 사항에 유의하시기 바랍니다.
- 원격 서버는 다음을 수행해야 합니다.아니요이름 기반 가상 호스팅을 사용합니다. 이름 기반 가상 호스팅은 동일한 IP 주소에 여러 개의 다른 사이트(예: example.com 및 example.org)를 배치합니다. example.com과 example.org는 모두 동일한 IP로 확인되므로 사이트 간의 구별은 브라우저에 제공된 URL로만 수행됩니다. 귀하의 경우, 원격 서버는 URL을 살펴보는데, 이는
http://localhost
오류를 생성하거나 예측할 수 없는 작업을 수행할 수 있습니다(Apache는 이런 일을 하는 경향이 있습니다!). 왜냐하면 이름 목록에서 "localhost" 도메인 이름을 인식하지 못하기 때문입니다. 가상 호스트. - 원격 서버는 포트 번호가 80에서 8080으로 변경되었다는 사실을 무시해야 합니다. 일반적으로 대부분의 정적 HTML 사이트와 웹 서버는 이를 무시하지만 일부 서버와 웹 응용 프로그램은 사용자를 포트 80으로 리디렉션하려고 시도할 수 있으며 이로 인해 문제가 발생할 수 있습니다.
위의 내용을 정말로 에뮬레이트하고 싶다면(나는 이것을 철저히 테스트하지 않았으며 ssh를 루트로 실행하는 습관을 들이는 것을 권장하지 않습니다!) 다음을 시도하십시오.
sudo ssh -N -L 127.0.0.1:80:whatsmyip.org:80 <remote-sshd-machine>
ssh 클라이언트에게 1024 미만이고 권한 있는 포트로 간주되는 포트 80에서 수신 대기하도록 요청하고 루트 소유 프로세스만 이러한 포트에 바인딩할 수 있으므로 위의 sudo가 필요합니다. 또한 클라이언트 측 포트 80에서는 다른 서비스(예: 웹 서버)를 실행할 수 없습니다. 그렇다면 이 명령을 시도하기 전에 서비스를 중지하고 포트 80을 해제해야 합니다.
둘째, /etc/hosts에 다음 줄을 추가합니다.
127.0.0.1 whatsmyip.org www.whatsmyip.org
첫 번째 명령은 로컬 컴퓨터(SSH 클라이언트)의 TCP 포트 80을 Whatsmyip.org의 포트 80으로 전달합니다. 호스트 파일은 브라우저를 사용하여 whatsmyip.org를 요청할 때 이름이 로컬 호스트로 확인되도록 합니다. 이렇게 하면 브라우저가 SSH 터널을 통해 Whatsmyip.org로 보내는 포트 번호와 호스트 이름을 보존할 수 있습니다. 터널이 작동하는지 어떻게 알 수 있나요? Whatsmyip.org는 클라이언트의 IP 주소가 아닌 SSH 서버(원격 SSHd 시스템)의 IP 주소를 보고해야 합니다.