SSH로 전달한 포트가 항상 SOCKS 프록시인 것은 아닙니다
애플리케이션을 구성하기 전에 SSH의 고정 로컬 전달과 동적 SOCKS 리스너를 구분하세요.
SSH 터널을 만들고 127.0.0.1 과 그 포트를 브라우저 프록시 설정에 넣었는데 아무것도 로드되지 않습니다. 리스너는 완벽하게 작동하고 있을 수 있습니다. 단지 잘못된 종류의 트래픽을 기다리고 있을 뿐일 수 있습니다.
| 전달 | 로컬 애플리케이션이 보내는 것 | 대상 선택 |
|---|---|---|
-L | 대상 서비스의 일반 프로토콜 | SSH 명령에서 고정됨 |
-D | SOCKS 협상, 그다음 애플리케이션 트래픽 | SOCKS 클라이언트가 요청 |
웹 서버 하나에 대해서는 이것이 고정 전달입니다.
ssh -N -L 127.0.0.1:9080:web.example.com:80 [email protected]
http://127.0.0.1:9080/ 을 웹사이트로 방문하세요. 포트 9080을 SOCKS라고 표시하지 마세요. 이 포트는 명령에 지정된 단 하나의 웹 서버로 바이트를 전달합니다. 다른 호스트 이름으로 사이트를 열면 가상 호스팅, 리디렉션, 쿠키에도 영향을 줄 수 있습니다.
SOCKS 리스너 의 경우 형태가 달라집니다.
ssh -N -D 127.0.0.1:1080 [email protected]
애플리케이션이 127.0.0.1:1080 에서 SOCKS를 사용하도록 구성하세요. 그 주소를 브라우저 주소 표시줄에 직접 입력하면 웹 요청이 SOCKS 리스너로 전송되며, 이 역시 프로토콜 불일치입니다.
OpenSSH 설명서 는 두 가지 형태를 모두 문서화합니다. 유용한 예외가 있습니다. 기존 HTTP 프록시를 -L 로 전달하면 고정 대상 자체가 HTTP 프록시이므로 HTTP 프록시 프로토콜을 사용하는 로컬 포트가 생성됩니다. 고정 전달에 무엇이 속하는지는 반대편 끝의 서비스가 결정합니다. SSH를 통해 기존 프록시 전달하기 는 그 프록시의 프로토콜과 계정을 유지합니다.