
내 질문이 어리석었다면 미안하지만 두 가지를 이해할 수 없습니다. 내가 작성된 예제를 수행하고 있다고 가정해 보겠습니다.여기:
[...]노트북에서 다음 장치에 연결하고 싶었습니다.http://www.ubuntuforumsorg에서 SSH 터널을 사용합니다. 소스 포트 번호 8080(대체 http 포트), 대상 포트 80(http 포트) 및 대상 서버 www.ubuntuforums.org를 사용합니다. :
ssh -L 8080:www.ubuntuforums.org:80 <host>
<host>
노트북 이름으로 바꿔야하는 곳 .
Q1: 이를 통해 실제로 무엇을 얻을 수 있나요? 원격 서버에는 sshd를 사용할 수 없으므로 트래픽이 내 PC를 암호화하지 않은 상태로 유지합니다. 그렇죠? 이게 무슨 용도로 필요할까요?
Q2: ssh -L 4444:linuxpl.com:80 localhost를 수행하려고 합니다. 내가 들어갈 때http://localhost:4444내 웹 브라우저에서 LiteSpeed Web Server의 내부 사이트를 볼 수 있습니다. 다른 페이지를 시도하면 Apache 내부 사이트가 보입니다. 다른 사이트를 시도하면 이 사이트의 404 페이지를 찾을 수 없다는 메시지가 표시됩니다. 하지만 그 중 일부는 예상대로 작동합니다. 왜 이런 일이 발생합니까? 어떻게 고치나요?
답변1
Q1: 당신은 그렇게 하고 싶지 않을 거예요. 페이지의 문구가 어리석습니다. 당신이 말했듯이 트래픽은 귀하의 컴퓨터에서 귀하의 컴퓨터로 암호화되어 이동한 다음 완전히 암호화되지 않은 채 포럼 사이트로 이동합니다. 예를 들어 방화벽을 우회하기 위해 다른 컴퓨터를 사용하여 트래픽을 전달하는 것으로 설명했을 수도 있습니다.
튜토리얼의 의미는 "포럼에 연결하고 싶다"는 것입니다.~을 통해다른 컴퓨터의 노트북"이라고 말하는 것이 더 이해가 잘 됩니다.
Q2: 열면http://localhost:4444/귀하의 컴퓨터에서는 포럼에 HTTP 요청을 할 것이지만 포럼에 호스트 localhost
가 아니라 호스트를 원한다고 알려줄 것입니다 linuxpl.com
. 그러면 서버는 가상 호스트를 사용 localhost
하고 와 동일한 사이트에 매핑되지 않기 때문에 원하는 실제 가상 호스트가 아닌 기본 페이지를 반환할 것입니다 linuxpl.com
.
따라서 대체로 SSH 터널을 통해 HTTP 트래픽을 전달하는 것은 여러 번 그렇게 쉽게 작동하지 않습니다. 어딘가에 있는 프록시로 전달하는 것이 훨씬 더 잘 작동할 것입니다.
브라우저가 적절한 헤더를 보내도록 하려면 호스트 파일을 설정하여 대상 주소가 귀하의 컴퓨터라고 주장하면 성공할 수 있습니다. 이렇게 하면 브라우저가 주소를 확인할 때 로컬 시스템에 연결하고 여전히 HTTP 서버에 적절한 호스트 이름을 알려줍니다.
다음 줄을 추가하여 시도해 볼 수 있습니다.
127.0.0.1 linuxpl.com
/etc/hosts로
답변2
Q1: 인터넷에 접속할 수 없는 환경에서 사용하고 있었습니다. 외부 세계에 대한 연결을 허용하지 않는 네트워크에서 노트북을 실행하고 있지만 외부 세계와 노트북이 있던 네트워크 모두에 연결할 수 있는 단일 시스템이 있다고 상상해 보십시오. 인터넷 트래픽이 승인된 시스템을 통해 외부 네트워크로 들어가도록 이 시스템에 대해 shh를 실행해야 합니다.
연결은 다음과 같습니다.http://localhost:4444ssh는 요청을 받아 호스트로 보내고 호스트는 이를 linuxpl.com:80으로 보냅니다. 랩탑과 호스트 사이의 연결은 ssh로 암호화되지만, 호스트와 인터넷 사이의 연결은 암호화되지 않습니다. 즉, ssh는 두 시스템 사이의 메시지만 전달하고 암호화합니다.
Q2: 문제가 무엇인지 실제로 이해하지 못하지만 ssh -L 4444:linuxpl.com:80 localhost는 실제로 의미가 없습니다... 컴퓨터와 컴퓨터 사이를 터널링하고 있기 때문에...