제 질문은 아래 추첨을 보시면 이해가 더 쉬울 것 같습니다. 그 아이디어는 어떤 이유로(예: 회사 인트라넷에 액세스하거나 우리 회사만 액세스할 수 있는 일부 웹 페이지에 액세스하는 등) 집에서 회사 IP를 사용하여 인터넷을 탐색하고 싶다는 것입니다. 문제는 내 컴퓨터 "내부"에 접근하려면 정문을 통과해야 한다는 것입니다.
물론 한 가지 해결책은 Gate에 로그인한 다음 내 컴퓨터로 이동하여 를 사용하는 것입니다 ssh -X
. 일단 로그인하면 내 집 컴퓨터에 팝업되는 Firefox 창을 열 수 있습니다. 이 접근 방식의 문제점은 인터넷 패킷뿐만 아니라 네트워크를 통해 전체 GUI를 보내야 하기 때문에 속도가 매우 느리다는 것입니다.
이 문제를 해결하기 위한 더 좋은 아이디어는 ssh -D8080 ip.remote.company
에 설명된 대로 터널을 만든 다음 내 집 컴퓨터에 Firefox를 설정하여 원격 컴퓨터를 프록시로 사용하여 이 보안 채널을 통해 인터넷 패킷(GUI는 아님)을 보내는 것입니다.많은 웹페이지.
물론 문제는 게이트를 통과해야 한다는 점인데, 이로 인해 복잡성이 더해지기 때문에 그림에서 빨간색으로 표시된 터널이 아닌 두 개의 터널을 설정해야 합니다.
그림과 같이 외부에서 회사 네트워크를 통해 인터넷으로 터널링하도록 포트 전달(또는 이와 유사한 것)을 설정하려면 어떻게 해야 합니까? 물론 세 대의 컴퓨터 모두에 대한 액세스 권한과 계정이 있습니다.
답변1
Unix 기반 소스 PC가 있고...
ssh -t -l gateuser -L7777:127.0.0.1:7778 gate "ssh -l inside_user -D7778 -N inside_pc"
그런 다음 localhost 포트 7777을 양말 프록시로 사용하십시오.
연결을 계속 유지하려면 autossh를 사용하는 것이 좋습니다. 이는 또 다른 문제일 수 있습니다.
설명: localhost에서 포트 7777을 게이트웨이의 포트 7778로 전달합니다. SSH 프롬프트에 응답할 수 있는 터미널을 할당합니다. 게이트에서 참조된 ssh 명령을 실행하여 게이트의 포트 7778에서 동적 전달을 실행합니다. (초기 PC의 7777로 전달)
답변2
이 방법을 시도해 보세요. SSH 클라이언트 구성 파일에 다음 구성을 추가합니다(예:) ~/.ssh/config
.
Host mypcinside
# replace 10.1.2.3 with the IP of your PC in the local network
# as seen from the gate.
ProxyCommand ssh -q gate nc -q0 10.1.2.3 22
DynamicForward 8080
Host gate
# replace with real hostname
Hostname gate.mycompany.com
이렇게 하면 게이트웨이를 통해 컴퓨터에 대한 포트 22에 대한 일반 TCP 연결 터널이 생성되고 게이트웨이에서와 마찬가지로 SSH 연결이 시작됩니다. 사용
$ ssh mypcinside
연결하다.
요구 사항 중 하나는 게이트웨이가 nc
설치되어 있어야 하고(또는 다른 netcat과 유사한 도구로 대체되어야 함) SSH 클라이언트를 사용하지 않고도 일반 TCP 포트 22 연결을 시작할 수 있어야 한다는 것입니다. 표준 구성에서는 이것이 전적으로 가능하지만 이러한 일이 발생하지 않도록 방지하기 위한 몇 가지 필수 안전 조치가 있을 수 있습니다.