쿼카러버의 기술 블로그
주피터 서버 구축하기 (1/3) [Running a jupyter notebook server] (Window Server) 본문
주피터 서버 구축하기 (1/3) [Running a jupyter notebook server] (Window Server)
quokkalover 2019. 1. 27. 23:35주피터 노트북 설치하기: https://etloveguitar.tistory.com/2
데스크탑이나 노트북에 윈도우 OS가 깔려있다면 누구든 주피터 서버를 만들 수 있다.
먼저 주피터 노트북을 설치해야 한다. 설치하지 않았다면
위에 적은 링크에 방법을 따라 주피터 노트북을 설치하면 된다.
작성된 모든 코드는 복사하기 쉽게 페이지 제일 하단에 입력해놓았으니, 복사, 붙여넣기하세용
주피터 서버?
주피터 노트북의 웹 애플리케이션은 서버-클라이언트의 구조를 가지고 있다.
이 구조 덕분에 매우 쉽게 주피터 서버를 구동시킬 수 있다.
조금 쉽게 설명하겠다.
주피터 노트북을 실행하는 방법은 cmd에서 ‘jupyter notebook’을 입력하는 것이다.
별도의 설정을 하지 않고 실행하면 아래처럼
자동으로 웹 브라우저가 켜지면서 주피터 노트북을 사용할 수 있다.
위와 같은 화면이 뜨게 되는데, 빨간색 상자의 주소를 보면 ‘localhost:8888’이 있는 것을 확인할 수 있다.
이는 주피터 노트북의 config에서 디폴트로 ‘127.0.0.1:8888’의 주소로 웹을 통해 접근하도록
설정해놓았기 때문이다.
이를 조금만 다르게 생각하면, 환경설정에서 저 localhost주소가 아닌 다른 주소로 변경하고,
외부에서도 그 주소를 쓸 수 있도록 허용해준다면, 내 PC가 아니더라도 다른 PC에서도
내 jupyter notebook을 쓸 수 있게되고, 그게 바로 jupyter 서버가 되는 것이다.
하지만, 아무런 보안장치도 마련하지 않은채 jupyter 서버를 열어놓게되면, 아무나 내 컴퓨터에 접근할 수 있게 되는데, 그러면 안되지용!!!!!
따라서 노트북 서버의 보안 수준을 조금 높일 필요가 있다.
보안 수준을 높이는데는 여러 가지 방법이 있다.
나는 아래의 보안 방법을 사용하고자 한다.
1) Hashed password를 만들도록 하겠다.
위 정도의 보안 수준을 마련하는 방법은 아래와 같다.
그 전에 이는 처음 주피터 노트북을 설치했거나, jupyter_notebook_config.py파일이 없는 상황이라는
가정하에서 작성된 것이다. (C:\Users\USERNAME\.jupyter\jupyter_notebook_config.py경로에 보통 있음)
이미 만들어 놓은 jupyter_notebook_config.py가 있다면, 그냥 기존의 파일을 수정하면 된다.
cmd창에 아래와 같이 입력한다.
jupyter notebook --generate-config |
위 같이 입력하면, 위에 써놓은 경로에 jupyter_notebook_config.py라는 파일이 생성된다.
처음 생성된 jupyter_notebook_config.py 파일은 모든 내용이 주석처리가 되어 있다.
jupyter server의 설정을 바꾸기 위해서
우리는 위 주석들을
1) 제거해서 변경하거나,
2) 어차피 주석이 되어있으니, 제일 하단에 우리가 원하는 설정의 문구를 넣어주는
방법으로 설정을 바꿀 수 있다.
Hashed Password는
‘1234’라는 비밀번호를 쓰더라도, 좀 남들이 못알아보게
'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'이런식으로 암호화된
형식으로 변환된 비밀번호를 말한다.
혹시나 누가 내 jupyter_notebook_config.py를 열어봐도, 비밀번호가 뭔지 바로 추측할 수 없게끔..
이를 만들기 위해서는 먼저 jupyter notebook을 실행해서
cell에 아래와 같이 입력한다.
from notebook.auth import passwd passwd() |
나는 ‘1234’를 입력했는데, 위처럼 알아보지 못하는 녀석이 나왔고, 이제 out으로 나온 ‘sha1:~~~’이 친구를 복사한다.
그리고
jupyter_notebook_config.py파일을 열어서
c.NotebookApp.ip = '*' c.NotebookApp.password = u'sha1:bcd259ccf...<내 hashed password적어주고>' c.NotebookApp.open_browser = False # It is a good idea to set a known, fixed port for server access c.NotebookApp.port = <내가 원하는 포트 번호, 근데 열어주면 방화벽에서도 풀어주어야 함> |
위 문구를 제일 아래에 추가해준다.
이렇게 보안 수준을 결정하고 나서는 이제, 주피터 노트북을 실행해서 다른 컴퓨터로부터
내 주피터 서버에 접속하도록 해보자!!
그 전에 먼저, 내 ip가 무엇인지 확인할 필요가 있다.
cmd창에 ipconfig를 쳐보자
jupyter_notebook_config.py에서 c.NotebookApp.ip = ‘*’로 해놓았기 때문에,
jupyter notebook을 실행하면 위 빨간상자의 ip를 통해 접근이 가능해지고
c.NotebookApp.port = ~~로 설정해주었던 그 포트 넘버를 뒤에 입력하면 이제 내 주피터 서버에 접속이 가능해진다.
예: 내 포트번호를 50000로 해놓았다면
http://192.168.31.109:50000 를 웹 브라우저에 입력시 jupyter notebook에 접근할 수 있다.
위처럼 비밀번호를 입력하라고 나오는데, 위에서 설정한 비밀번호를 입력하면 이제 주피터 서버에 접근할 수 있게 됐다.
만약 비밀번호 만으로는 보안수준이 너무 약하다고 생각된다면
SSL 인증서를 통해 보안을 강화할 수 있는데, 별도의 글에서 다루도록 하겠다.
공유기를 통해 연결된 컴퓨터로는 이제 192.168.31.109:50000을 웹 브라우저에 입력하면,
이 주피터 서버를 쓸 수 있게 되는 것이고,
같은 장소가 아닌 다른 외부에서 접속하고 싶으면 이제 포트 포워딩을 해서 사용하면 되겠다.
포트 포워딩에 대해서도 다른 글에서 별도로 다루도록 하겠다.
본 글은
https://jupyter-notebook.readthedocs.io/en/latest/public_server.html 를 인용한 글입니다.
사용한 코드
jupyter notebook --generate-config from notebook.auth import passwd passwd() c.NotebookApp.ip = '*' c.NotebookApp.password = u'sha1:bcd259ccf...<내 hashed password적어주고>' c.NotebookApp.open_browser = False # It is a good idea to set a known, fixed port for server access c.NotebookApp.port = <내가 원하는 포트 번호, 근데 열어주면 방화벽에서도 풀어주어야 함> |
추가 내용
1) SSL인증서 생성을 통해 보안 강화 : https://etloveguitar.tistory.com/6
2) 포트포워딩 : https://etloveguitar.tistory.com/9
3) 방화벽에 인바운드 규칙 추가하기 : https://etloveguitar.tistory.com/8
'[Infra & Server] > 주피터 서버' 카테고리의 다른 글
윈도우에서 외부접근 가능한 port 열기 (방화벽에 인바운드 규칙 추가하기)(jupyter server) (0) | 2019.01.28 |
---|---|
주피터 서버 구축하기 (2/3) [SSL Certificate로 주피터 서버 보안 강화하기] (Window Server) (0) | 2019.01.27 |
윈도우에 서버 구축하는 이유..ㅎ (SSH 사용 / Jupyter Server) (0) | 2019.01.26 |