
이제 내가 착각하지 않았다면 포트 80의 웹 서버에 대한 포트 80의 SSH 터널은 내 포트 80이 해당 서버를 통해 터널링하도록 허용해야 합니다. 맞습니까? 그러나 터널을 설정하고 웹 사이트에 액세스하면 내 로그가 여전히 서버의 IP 대신 내 집 컴퓨터에서 나오는 것처럼 보입니다. 이유가 무엇인가요?
다음 명령을 사용하지만 터미널의 호스트에 SSH로 연결하는 것뿐입니다.
ssh root@webserver -L 80:127.0.0.1:80
답변1
방금 이것을 시도하고 작동하는지 확인했습니다.
ssh -ND 8080 [email protected]
루트는 예약된 포트(8080이 일반적인 대체 포트)이므로 시스템의 로컬 포트 80을 바인딩하는 데 필요합니다. 브라우저 트래픽만 전달하려면 Firefox / Chrome / 무엇이든 "8080"에서 Socks 프록시 "localhost"를 사용하도록 설정할 수 있습니다.
루트 없이 시도해 보세요. 루트 액세스 권한이 없는 웹 서버에서 작동합니다.
답변2
터널이 설정되면(을 사용하여 -L
) 사용하는 URL을 변경해야 합니다. 예를 들어 http://127.0.0.1/
가상 호스팅 설정으로 인해 사이트 이름이 일치해야 하는 경우 이를 데스크톱 호스트 파일에 추가해야 합니다.
127.0.0.1 www.domain.com
"test.domain.com"과 같은 127.0.0.1에 하나의 이름을 사용할 수 있도록 서버 vhost에 별칭을 정의할 수 있으며 유용할 경우 실제 이름을 직접 사용할 수 있습니다. 항목을 제거하는 것을 잊어버릴 수 있습니다. 호스트 파일에서 삭제하는 것은 혼란을 야기하는 좋은 방법입니다. 사이트 작동 방식에 따라 다릅니다.
포트 80을 전달하려면 웹 서버가 '아닌'' 데스크탑의 루트만 있으면 됩니다.루트에 대한 SSH 로그인을 허용하지 않는 것이 좋습니다.
권한이 없는 포트 사용5월사이트에 따라 다시 작업하십시오.
ssh user@webserver -L 1080:127.0.0.1:80
URL을 사용하세요 http://127.0.0.1:1080/
.
-D
제안된 대로 SOCKS 프록시( ) 사용5월SOCKS/DNS/방화벽/NAT 구성에 따라 약간의 놀라움이 발생할 수 있습니다.
(리눅스에서는 예약된 포트의 루트가 되는 대신 POSIX 기능을 사용할 수 있습니다.https://stackoverflow.com/questions/413807/is-there-a-way-for-non-root-processes-to-bind-to-privileged-ports-1024-on-lNO_IPPORT_RESERVED_CONCEPT
그러나 이는 Defined 로 컴파일하지 않는 한 포트 번호에 대한 추가 하드 코딩 검사가 있으므로 표준 버전의 OpenSSH에서는 작동하지 않습니다 . 연결된 질문에 대한 답변에는 이에 대한 다양한 다른 솔루션이 있습니다.)