이 글에서는 Ubuntu 서버에 Jupyter Notebook 서버를 설치하고, SSH 터널링 및 방화벽 설정을 통해 원격에서 안전하게 접속하는 방법을 단계별로 설명합니다.
시스템 요구사항 및 준비
-
Ubuntu 18.04 이상 버전의 서버, 비(非)루트 사용자 계정과 sudo 권한이 필요합니다.
-
기본 패키지 목록 및 설치된 소프트웨어를 최신 상태로 업데이트합니다:
sudo apt update && sudo apt upgrade -y
이 명령은 저장소 정보를 갱신하고, 설치된 패키지를 최신 버전으로 업그레이드합니다.
1. Python 및 pip 설치
-
Python3 및 개발 툴을 설치합니다:
sudo apt install python3 python3-pip python3-venv build-essential -y
Python3는 Jupyter Notebook의 실행 환경이며, pip는 패키지 관리 도구입니다.
-
설치 확인:
python3 --version pip3 --version
2. Jupyter Notebook 설치
-
pip를 통해 클래식 노트북 패키지를 설치합니다:
pip3 install notebook
이 명령은 Jupyter Notebook의 모든 핵심 종속성을 함께 설치합니다.
-
설치 완료 후, 다음 명령으로 기본 실행이 가능한지 확인합니다:
jupyter notebook --version
3. 초기 설정
-
설정 파일 생성:
jupyter notebook --generate-config
기본 홈 디렉토리 아래
~/.jupyter/jupyter_notebook_config.py
파일이 생성됩니다 . -
jupyter_notebook_config.py
에서 다음 옵션을 편집합니다:c.NotebookApp.ip = '0.0.0.0' c.NotebookApp.port = 8888 c.NotebookApp.open_browser = False
이렇게 하면 모든 네트워크 인터페이스에서 포트 8888로 접속 대기하도록 설정됩니다.
4. 보안 설정 (비밀번호 / 토큰)
-
노트북 서버 비밀번호를 설정하여 무단 접근을 방지합니다:
jupyter notebook password
이 명령은 비밀번호 해시를 설정 파일에 기록합니다.
-
또는 토큰 인증을 사용하여 세션별로 발급된 토큰으로 접근할 수 있습니다.
5. 방화벽 설정
-
Ubuntu UFW 방화벽에서 8888 포트를 허용합니다:
sudo ufw allow 8888 sudo ufw enable
이를 통해 외부에서 포트 8888로 접속이 가능해집니다.
6. SSH 터널링으로 원격 접속
-
SSH 터널링을 사용하면 방화벽을 직접 수정하지 않고도 로컬 머신에서 접속할 수 있습니다:
ssh -NfL localhost:8888:localhost:8888 사용자명@서버_IP
-
로컬 브라우저에서
http://localhost:8888
로 접속하면 원격 서버의 노트북에 안전하게 접속됩니다 .
7. systemd 서비스 구성 (선택 사항)
-
서비스 파일 생성 (
/etc/systemd/system/jupyter.service
):[Unit] Description=Jupyter Notebook [Service] Type=simple PIDFile=/run/jupyter.pid ExecStart=/usr/bin/jupyter-notebook --config=/home/사용자명/.jupyter/jupyter_notebook_config.py User=사용자명 Group=사용자명 WorkingDirectory=/home/사용자명/notebooks Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
이 파일에서 사용자 계정, 작업 디렉토리, 실행 명령을 정의합니다.
-
서비스 활성화 및 시작:
sudo systemctl daemon-reload sudo systemctl enable jupyter sudo systemctl start jupyter
재부팅 후에도 자동으로 Jupyter Notebook이 실행됩니다.
8. SSL 설정 (선택 사항)
-
공개 네트워크에서 HTTPS로 암호화된 접속을 위해 SSL/TLS를 적용할 수 있습니다.
-
Let’s Encrypt 인증서를 사용하려면
certbot
등을 통해 발급받은fullchain.pem
및privkey.pem
경로를 설정 파일에 지정합니다:c.NotebookApp.certfile = '/경로/fullchain.pem' c.NotebookApp.keyfile = '/경로/privkey.pem' c.NotebookApp.ip = '*' c.NotebookApp.port = 443
-
이후 브라우저에서
https://your.domain.com
으로 접속합니다.
결론
이상 Ubuntu 서버에 Jupyter Notebook을 설치하고, 비밀번호·방화벽·SSH 터널링·systemd·SSL 설정을 통해 원격에서 안전하게 접속하는 방법입니다.
[Linux/Ubuntu] 우분투로 Jupyter Notebook 원격접속하기 (+ 간단한 vi 에디터 명령어와 에러 해결법)
0 댓글