본문 바로가기
소프트웨어 & 클라우드

[Jupyter] Windows WSL2 에서 Jupyter Lab 원격 접속 세팅하기

by TaeGyeong Lee 2025. 2. 10.

개요 

Jupyter Lab은 Jupyter 프로젝트에서 개발, 배포하는 '노트북' 환경입니다. 프로그래밍 간 상호작용이 용이한 개발 환경을 '노트북' 이라고 부르는데, Jupyter 프로젝트에서 차세대 '노트북'으로 미는 것이 Jupyter Lab 입니다. 

이 글에서는 윈도우 wsl에 Jupyter Lab 서버를 구동하여, 아이패드에서 외부 네트워크에서 Jupyter Lab 을 통해 wsl 내부 개발 환경을 자유롭게 접속할 수 있도록 세팅하는 방법을 서술합니다. 

 

개괄적인 흐름 및 전제  

개괄적인 흐름 

아래 흐름을 참고하세요, 개괄적인 구조는 아래와 같습니다. 조금 특이한 부분은, Jupyter 서버는 WSL에서 구동하지만 윈도우 로컬호스트에서 접속할 수 있도록 세팅이 됩니다. 

 

전제 

이 글에서 설명하는 방법을 통해 세팅을 마치기 위해서는 아래와 같이 몇 가지 사항이 전제되어야 합니다. 참고하세요. 

  • 라우터(공유기)의 기능 : DDNS 사용 및 포트포워딩 사용 가능 (일반적으로 요즘 나오는 공유기는 대부분 제공합니다.)
  • 윈도우 기기의 WSL2 세팅 : WSL2 세팅이 완료되어야 합니다. 

 

라우터 포트포워딩  

외부에서 접속을 허가하기 위해서는 먼저 라우터, 윈도우 기기가 인터넷을 사용하기 위해 연결된 공유기에서 포트포워딩을 열어주어야 합니다. 

주피터 서버에서 기본값으로 사용하는 포트(8888) 를 포워딩하는 것은 지양되기에, 8888 포트가 아닌 8484 포트로 진행해 보겠습니다. 각 공유기 관리자 페이지에 접속하여 8484 포트 포워딩을 진행해 주세요. 

 

윈도우 방화벽 설정 

공유기에서 윈도우 기기로 8484 포트 포워딩을 완료하였다면, 윈도우 방화벽에서 8484 포트를 사용할 수 있도록 설정해야 합니다. 

아래와 같이 '고급 보안이 포함된 Windows Defender 방화벽' > 인바운드 규칙 에서 새 규칙을 생성해 주세요. 

  • 규칙 종류 : 포트 
  • 적용 프로토콜 : TCP 
  • 포트 : 특정 로컬 포트 : 8484
  • 작업 : 연결 허용 
  • 프로필 : 도메인, 개인, 공용 모두 선택 

생성된 새 인바운드 규칙은 아래와 같이 설정됩니다. 

 

윈도우 내부 포트 포워딩 

방화벽을 허용했다면, 윈도우 OS에서 요청을 받을 경우 Jupyter Lab으로 접속 가능하도록 포트 포워딩 테이블을 업데이트 해야 합니다. 

Jupyter Lab은 기본적으로 윈도우 로컬호스트 127.0.0.1:8888 에서 실행되기 때문에 0.0.0.0:8484 으로 부터 온 요청을 Jupyter Lab으로 포워딩할 수 있도록 설정해 보겠습니다. 

 

관리자 모드로 powershell 을 실행하여 아래 명령을 실행해 주세요. 

netsh interface portproxy add v4tov4 listenport=8484 listenaddress=0.0.0.0  connectport=8888 connectaddress=127.0.0.1

명령이 정상적으로 수행되었다면 아래 명령을 통해 포워딩 테이블을 확인해 보세요. 

netsh interface portproxy show all
ipv4 수신 대기:             ipv4에 연결:

주소            포트        주소            포트
--------------- ----------  --------------- ----------
0.0.0.0         8484        127.0.0.1       8888

만일 테이블을 삭제하고 싶다면 아래 명령을 실행하세요. 

netsh interface portproxy reset

 

WSL 에서 Jupyter Lab 설치 

이제 WSL 에서 Jupyter Lab을 설치합니다. 아래 명령을 통해 Jupyter Lab 을 설치하세요. 

주의 
설치 과정 중 설정할 수 있는 비밀번호 설정을 반드시 !! 하세요. 
명령 : jupyter lab password 
pip install jupyterlab

 

Jupyter Lab 구동 

이제 대부분 세팅이 완료되었습니다. 아래 명령을 통해 Jupyter lab 을 실행해 보세요. Jupyter Lab 은 윈도우 로컬호스트(127.0.0.1)에서 구동되며, 8888 포트를 리스닝하게 됩니다. 

 --no-brower 옵션을 반드시 추가해서 사용하셔야 합니다. 

python3 -m jupyter notebook --no-browser --port=8888

 

Jupyter Lab 외부 접속 권한 허용 

추가로, 외부에서 접속할 수 있도록 jupyter Lab 의 자체적인 설정도 수정해야 합니다. 외부에서 접속하면 아래와 같이 로그가 뜨며 접속 기기에선 403 Forbidden 텍스트가 출력될 겁니다.

Blocking request with non-local 'Host' 이하생략. If the server should be accessible at that name, set ServerApp.allow_remote_access to disable the check.

아래 명령을 통해 Jupyter Lab 설정 파일을 생성합니다. 

jupyter lab --generate-config

생성된 파일을 Vi로 열어 c.ServerApp.allow_remote_access 값을 주석 제거 후 True 로 수정합니다. 

## Allow requests where the Host header doesn't point to a local server
#
#         By default, requests get a 403 forbidden response if the 'Host' header
#         shows that the browser thinks it's on a non-local domain.
#         Setting this option to True disables this check.
#
#         This protects against 'DNS rebinding' attacks, where a remote web server
#         serves you a page and then changes its DNS to send later requests to a
#         local IP, bypassing same-origin checks.
#
#         Local IP addresses (such as 127.0.0.1 and ::1) are allowed as local,
#         along with hostnames configured in local_hostnames.
#  Default: False
c.ServerApp.allow_remote_access = True

 

이제 모든 세팅이 완료되었습니다. 아이패드에서 정상적으로 접속 가능함을 확인할 수 있습니다. 

 

참고) Jupyter Lab 백그라운드에서 실행

nohup 명령어를 앞에 추가

nohup jupyter notebook --no-browser --port=8888 &

백그라운드 실행을 종료하고 싶다면 아래 명령을 통해 PID 확인

ps -ef | grep python

프로세스 종료 

kill 파이썬PID

 

참고 자료