저고데

[시행착오] 우분투의 주피터 노트북을 원격 접속해보자 본문

시행착오

[시행착오] 우분투의 주피터 노트북을 원격 접속해보자

진철 2024. 7. 23. 14:32
728x90
반응형

안녕하십니까.

오랜만에 포스팅입니다.

다름이 아니라, 신입 교육 과정에서 주피터 노트북을 사용해야하는 일이 꽤나 빈번했어요.

하지만, 우분투 환경에서 주피터 노트북을 사용하기에는 VM 화면이 작아서 보기 불편하더라고요.

따라서, 우분투 환경의 주피터 노트북을 윈도우 브라우저로 원격 접속하는 방법을 알려드리고자 합니다.

(그리고 완전 바보 같은 실수까지 알려드릴게요. 이거 때문에 시간 좀 날려서 억울합니다 ㅠ)

본격적으로 들어가기 앞서서, 우분투의 경우 VM Virtual Box를 통해 실행했음을 알립니다.

 

1. VM Virtual Box 포트포워딩 열어두기

제가 시간을 날리는데 가장 큰 공을 세운 부분입니다.

이게 바로 나오면 곤란하긴 한데, 쨋든 쨋든 이걸 먼저 해야 원격 접속이 됩니다.

우분투를 실행하는 것이긴 하지만, 궁극적으로 우분투는 가상 머신 위에서 실행되는 것이잖아요?

따라서, 가상 머신의 포트포워딩을 열어주어서, 다른 브라우저와 소통할 수 있는 일종의 통로를 만들어야 합니다.

그래야만, 우분투에서도 정상적으로 바깥 환경과 통신을 할 수 있어요.

마치 우리가 VR 머신을 통해 초원을 달리고 있다고 한들, 단칸방에서 달려버리면 벽과 부딪히는 것과 유사합니다.

따라서, 설정-> 네트워크->고급->포트 포워딩을 들어가서 호스트 포트와 게스트 포트를 모두 8888로 설정해줍니다.

포트 번호는 8888로 설정하지 않아도 상관 없습니다. 주피터 노트북의 기본값이 8888이라 편하게 설정하였습니다.

 

 

2. 우분투에서 주피터 노트북 비밀번호 발급받기

(주피터 노트북이 깔려있다고 가정합니다.)

비밀번호가 필요한 이유는 보안과 인증과 관련된 문제입니다.

이전에는 주피터 노트북 로그인 시, 토큰이 필요가 없었는데, 언제부터인지 인증 목적의 토큰을 요구하게 되어서 필수가 되었습니다.

하지만, 어렵지는 않으니 걱정하지 마세요.

ipython 명령어를 입력하여, 프롬프트에서 python 명령어를 입력할 수 있는 환경을 만듭니다.

그리고 from jupyter_server.auth import passwd를 입력해주세요.

만약 ! Module not found와 같은 오류가 발생한다면, pip install jupyter_server를 통해 모듈을 설치해주세요.

그리고 간혹, 위의 명령어가 아닌 from notebook.auth import passwd라고 작성된 블로그들이 있을 것인데, 오래된 옛날 모듈이라서 존재하지 않습니다. 그러니 넘어가주시면 되겠습니다.

무튼, passwd()를 입력하게 되면, 비밀번호를 입력하라는 문구가 나올 것인데, 이는 추후에 주피터 노트북을 접속할 때, 입력해야하는 비밀번호가 되기 때문에 잘 기억해주시기 바랍니다.

마지막으로, Out[2]: 'argon2 ~~ 어쩌구 ~~라고 보시나요?

이 친구는 이전에 언급했듯이, 보안과 인증을 위한 일종을 토큰 해쉬 값이라고 보면 됩니다.

추후에 설정 파일에 입력을 해야하기 때문에 따로 복사하여 값을 저장해주세요.

 

3. jupyter 설정 파일 만들기

마지막 단계입니다.

우선 설정 파일을 만들어줍시다.

jupyter notebook --generate-config 명령어를 입력하면 자동으로 설정 파일이 생성됩니다.

그리고 생성된 경로도 출력되는데, 대부분 /home/{user}/.jupyter/jupyter_notebook_config.py일 겁니다.

vi /home/{user}/.jupyter/jupyter_notebook_config.py 명령어를 통해 생성된 설정 파일을 수정할 겁니다.

# Configuration file for notebook.

c = get_config()  #noqa
c.ServerApp.allow_origin = '*'
c.ServerApp.notebook_dir = '/home/user'
c.ServerApp.ip = '0.0.0.0'
c.ServerApp.port = 8888
c.ServerApp.password = 'argon2:$argon2id$v=19$m=10240,t=10,p=8$BebwT2fKrNA5l3XZjFcqOA$wYykYpNjPP3c90jQZRmHfhFpIz5Zi/FxyFLLdxFi+4Y'
c.ServerApp.open_browser = False
c.ServerApp.allow_remote_access = True
c.ServerApp.trust_xheaders = True

위와 같이 입력해주세요.

단, password 부분은 좀 전에 복사한 토큰 해쉬 값을 붙여주시기 바랍니다.

이도 마찬가지로 c.ServerApp이 아닌, c.NotebookApp으로 작성된 블로그가 있을 것인데, 오래된 메서드이므로 입력하시면 안됩니다.

만약 주피터 노트북 버전이 낮아서 c.NotebookApp일수도 있는데, 이를 확인하시려면, 설정 파일에서 '/'를 누르시고 c.NotebookApp을 입력해보세요.

일종의 검색 기법인데, 검색이 되면 NotebookApp으로 하시고 그렇지 않다면 ServerApp으로 입력하시면 됩니다.

 

축하드립니다. 이제 끝이에요.

jupyter notebook 명령어를 통해 실행을 하세요.

그리고 윈도우 웹 브라우저에서 '127.0.0.1:8888'이나 'localhost:8888'로 접속하시면 원격으로 접속되는 것을 확인하실 수 있습니다.

728x90
반응형