저는 최근 집에서 내부적으로 접근 가능한 시스템에 FreeIPA를 설치했습니다. LAN 외부 네트워크에서 이 웹 UI를 관리하고 싶지만 동시에 이 웹 UI를 공용 인터넷에 노출하고 싶지 않습니다. SSH 터널을 통해 액세스할 수 있는 방법이 있나요?
노트:ssh
나는 -L
다음과 같은 스위치를 사용하여 터널을 설정하는 데 익숙합니다.
$ ssh -L 12345:ipa.local.net:80 mysshserver
그러나 FreeIPA에 액세스하려면 서버의 실제 호스트 이름을 사용해야 하고 포트 443 및 80을 사용하여 웹 UI에 액세스할 수 있어야 하기 때문에 이 접근 방식은 이 경우 작동하지 않습니다.
이것 외에 이것을 달성할 수 있는 다른 방법이 있습니까 ssh -L
?
답변1
-L
SSH 터널을 수행하는 것은 모든 용어로 인해 약간 혼란스러울 수 있지만 개별 포트 대신 로컬로 소켓을 할당하여 포트를 "동적으로" 할당할 수 있는 보완 기능이 있습니다 .
매뉴얼 페이지에서:
-D [bind_address:]port
Specifies a local ``dynamic'' application-level port forwarding. This works by
allocating a socket to listen to port on the local side, optionally bound to the
specified bind_address. Whenever a connection is made to this port, the connection
is forwarded over the secure channel, and the application protocol is then used to
determine where to connect to from the remote machine. Currently the SOCKS4 and
SOCKS5 protocols are supported, and ssh will act as a SOCKS server. Only root
can forward privileged ports. Dynamic port forwardings can also be specified in
the configuration file.
소켓을 할당하면 DNS 쿼리를 포함한 모든 트래픽을 원격 사이트로 보낼 수 있습니다.
사용 방법
우선, 다음과 같이 (인터넷의 공용 IP 주소를 통해) LAN에 대한 연결을 열어야 합니다.
$ ssh -D 1234 myserver
노트:이는 공용 인터넷 IP 주소를 통해 액세스할 수 있는 서버에 SSH로 연결할 수 있다고 가정합니다.
설정이 완료되면 다른 터미널에서 이 터널을 사용하도록 웹 브라우저를 구성해야 합니다.노트:이 유형의 터널은 소켓을 제공하므로 연결하려면 웹 브라우저에 이 소켓을 통해 모든 트래픽을 프록시하도록 지시해야 합니다. 이는 일반적으로 다음과 같이 나타납니다.SOCKS 또는 SOCKS v5 연결 유형당신의 대행사를 위해.
한 가지 예
이 예에서는 CLI를 통해 Chromium을 사용하여 이 작업을 수행하는 방법을 보여 드리겠습니다.
$ ./Chromium --proxy-server="socks5://localhost:1234"
여기에서는 Chromium을 시작하고 앞서 localhost 포트 1234에서 구성한 SSH 터널을 가리킵니다. 이를 통해 LAN에 구성된 서버의 URL에 액세스하려고 하면 해당 URL로 이동됩니다.
프록시에 다른 브라우저 사용
이 기능은 모든 주요 브라우저에서 사용할 수 있으며 SuperUser와 같은 다른 SE 사이트에서도 상당히 광범위하게 다루고 있습니다.
특정 트래픽만 선택적으로 프록시 처리하고 다른 모든 트래픽은 일반 인터넷 연결을 통해 라우팅할 수 있는 다양한 브라우저 확장 기능을 활용할 수도 있습니다.
예를 들어 ProxySwitchy를 사용할 수 있습니다! Chrome에서는 다음을 수행할 수 있습니다.