SSH 터널링, Jupyter 보안

SSH 터널링을 통해 원격 컴퓨터의 포트를 로컬 포트인 것 처럼 사용하기

Jupyter 를 위한 방화벽 open 없이, SSH 터널링을 통해 Jupyter 이용하기 

원격 컴퓨터에서 실행시킨 Jupyter 의 8888 포트를
현재 컴퓨터의 호스트의 8000 포트로 연결하여
현재 컴퓨터에서 localhost:8000 로 Jupyter Lab 에 접속하기



Jupyter 외부 접속 비추천 사유

Jupyter Notebook, Lab 취약점을 통해 코인 채굴 프로그램이 돌아가는 경우를 2~3차례 목격하였다.

제한 없이 아무나 접속할 수 있다. 암호로 접근을 제한하긴 하지만 Jupyter Notebook, Lab 등의 보안 취약점을 통해 해커가 임의의 코드를 실행할 수 있다.

~/.jupyter/jupyter_lab_config.py
c.ServerApp.ip = '0.0.0.0'
c.ServerApp.port = 8888


원격 서버에서 Jupyter 실행

1) Jupyter 의 실행 IP를 다음과 같이 설정한다.

~/.jupyter/jupyter_lab_config.py
c.ServerApp.ip = '127.0.0.1'
c.ServerApp.ip = 'localhost'

2) 원격 서버에 접속하여 tmux 와 같은 터미널 에뮬레이터를 실행한다.

3) 원격 서버에서 실행한 tmux 안에서 jupyter 를 실행한다. 1의 설정으로 인해, 원격 서버 안에서만 Jupyter Lab 접속이 가능하다.



(참고) tmux 사용법은 다음을 참고한다


SSH 터널링을 통한 포트포워딩

리눅스

SSH 호스트 alias 가 설정되어 있다면 첫번째 줄처럼 짧게, 그렇지 않다면 두번째 줄과 같이 입력하여 SSH 터널링을 할 수 있다.

ssh -L 8000:localhost:8888 REMOTE_HOST
ssh -L 8000:localhost:8888 REMOTE_USER@REMOTE_HOST_IP -p REMOTE_SSH_PORT


윈도우

윈도우에서는 putty 를 활용하여 SSH 터널링을 할 수 있다


로컬에서 원격지의 Jupyter 접속

웹브라우저에 http://localhost:8000 을 입력하여 원격지의 Jupyter 에 접속한다.

원격 서버에서 tmux 세션을 만들고 그 안에서 Jupyter 를 실행하였기 때문에, SSH 세션이 끊기더라도 작업이 유지된다.

SSH 터널링을 다시 해 주면 이어서 작업할 수 있다.


함께 읽기

How to Install, Run, and Connect to Jupyter Notebook on a Remote Server - Digital Ocean

SSH 로컬 포트 포워딩 - 여러분의 컴퓨터 공학 교육에서 누락된 학기

GCP에서 Jupyter를 사용하기