SSH 터널링, Jupyter 보안
SSH 터널링을 통해 원격 컴퓨터의 포트를 로컬 포트인 것 처럼 사용하기
Jupyter 를 위한 방화벽 open 없이, SSH 터널링을 통해 Jupyter 이용하기
원격 컴퓨터에서 실행시킨 Jupyter 의 8888 포트를
현재 컴퓨터의 호스트의 8000 포트로 연결하여
현재 컴퓨터에서 localhost:8000 로 Jupyter Lab 에 접속하기
Jupyter 외부 접속 비추천 사유
Jupyter Notebook, Lab 취약점을 통해 코인 채굴 프로그램이 돌아가는 경우를 2~3차례 목격하였다.
제한 없이 아무나 접속할 수 있다. 암호로 접근을 제한하긴 하지만 Jupyter Notebook, Lab 등의 보안 취약점을 통해 해커가 임의의 코드를 실행할 수 있다.
c.ServerApp.ip = '0.0.0.0' c.ServerApp.port = 8888
원격 서버에서 Jupyter 실행
1) Jupyter 의 실행 IP를 다음과 같이 설정한다.
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