- 외부에서 액세스할 수 있는 고정 IP 주소가 없는 로컬 네트워크에 컴퓨터(A라고 함)가 있습니다. (SSH 포트
AAAAA
) - A에는 외부에서 접속할 수 있는 웹서버가 있습니다.
- 인터넷에서 액세스할 수 있고 웹 서버(ssh 포트:
BBBBB
) 도 실행하는 서버(B)가 있습니다. - 웹 브라우저가 있는 모든 컴퓨터에서 A부터 B까지의 웹 서버에 액세스할 수 있기를 원합니다.
다음 설정으로 SSH 원격 터널링을 성공적으로 사용해 왔습니다.
기계 A에서:
$> ssh -f -N -p BBBBB -R 0.0.0.0:9000:localhost:AAAAA [email protected]
머신 C에서:
$> ssh -f -p 9000 -D 9001 -N [email protected]
C 머신의 웹 브라우저에서,
manual proxy configuration SOCKS host: localhost, port 9001, SOCKS v5
이것은 정말 잘 작동하지만 C에서 SSH 명령을 실행하고 매번 웹 브라우저에서 설정을 변경해야 하는 것이 매우 번거롭습니다...
그래서 나는 누군가에게 이에 대해 이야기했는데, 그 사람은 B의 웹 서버에 있는 nginx의 일부 웹 구성을 사용하여 서버 B에서 직접 C 머신에서 수행한 부분을 수행함으로써 설정을 단순화할 수 있다고 말했습니다. 이제 나는 이것을 시도했습니다.
- A에서는 이전과 동일
B:
$> ssh -f -p 9000 -D 9001 -N [email protected]
B의 nginx 구성에서:
$> cat /etc/nginx/sites-available/default:
upstream tunnel { server 127.0.0.1:9000; } server { listen 80; [...] location /A { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://tunnel; } [...] } server { listen 443 ssl; [...] location /A { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://tunnel; } [...] }
제가 이해한 바에 따르면, 인터넷에 연결된 컴퓨터의 웹 브라우저에서 내 컴퓨터 A의 전달 포트인 http://B.B.B.B/A
터널을 요청 127.0.0.1:9000
하면 A의 웹 서버에 액세스할 수 있습니다.
하지만 이 설정에는 문제가 있습니다. 연결을 시도하면 http://B.B.B.B/A
로딩 시간이 길어지고(약 1분) 빈 페이지가 나타나고 다음과 같은 오류 메시지가 표시됩니다.
SSH-2.0-OpenSSH_6.7p1 Raspbian-5+deb8u3 Protocol mismatch.
나는 그 오류를 조금 구글링하여 상대적으로 유사한 문제가 있는 몇 개의 게시물을 찾았지만 솔직히 이런 종류의 일에 대한 나의 (매우) 제한된 기술로 인해 그들의 수정 사항을 내 사용 사례에 적용하려고 할 때 길을 잃었습니다. ... 누구든지 저를 도와주실 수 있나요?