AWS EC2 t2.xlarge
OS : Red Hat 9.1
Python :3.9
Jupyter Notebook 6.4.12
Jupyter Notebook 설치 후 비밀번호를 설정한다.
꼭 필요한 과정은 아니다.
다만 비밀번호를 생성하지 않으면 실행 시 마다 생성되는 token 값으로 접속해야한다.
python
>>> from notebook.auth import passwd
>>> passwd()
Enter password: # 비밀번호 입력
Verify password: # 비밀번호 입력
'<agon2/sha ... PASSWORD_HASH>'
# 비밀번호 2번 입력하면 비밀번호 해쉬값이 나오는데 !꼭! 복사해둔다
>>> exit()
# 설정 파일 생성
jupyter notebook --generate-config
# 설정 파일 편집
vi /home/ec2-user/.jupyter/jupyter_notebook_config.py
# 위에서 생성된 비밀번호 해쉬값 입력
conf.NotebookApp.password = u'<PASSWORD_HASH>'
jupyter notebook
1번을 생략했다면 접속 URL을 출력하는데 복사해둔다.
# 서버 8888포트를 로컬 <LOCAL_PORT> 포트로 포트포워딩
# (jupyter notebook 기본 포트 8888)
ssh -i "<key.pem>" -L <LOCAL_PORT>:localhost:8888 <username>@<public_ip>
# 실행중인 프로세스 확인
ps
# LISTEN 포트 확인
sudo lsof -i -P -n | grep LISTEN
# 58971 프로세스에서 8888 포트 LISTEN
localhost:8888
비밀번호 입력 창이 나오는데 1번에서 입력한 비밀번호를 입력한다.
1번을 생략했다면 2번에서 복사한 URL로 접속한다.
Jupyter Notebook 설치, 실행 후
http(s)://<PUBLIC_IP>:8888 로 접속하면 연결이 안됐다.
인바운드는 내 ip에서는 모두 허용이었다.
인증 키를 만들고,
비밀번호를 생성하고,
jupyter_notebook_config.py 에 설정하고,
접속하면 된다던데 안된다.
접속 시도하면 아래 로그가 발생한다.
https말고 http로 접속하라는데 그래도 안된다.
handle: <Handle BaseAsyncIOLoop._handle_events(8, 1)>
Traceback (most recent call last):
File "/opt/anaconda/anaconda3/lib/python3.9/asyncio/events.py", line 80, in _run
self._context.run(self._callback, *self._args)
File "/opt/anaconda/anaconda3/lib/python3.9/site-packages/tornado/platform/asyncio.py", line 189, in _handle_events
handler_func(fileobj, events)
File "/opt/anaconda/anaconda3/lib/python3.9/site-packages/tornado/netutil.py", line 276, in accept_handler
callback(connection, address)
File "/opt/anaconda/anaconda3/lib/python3.9/site-packages/tornado/tcpserver.py", line 288, in _handle_connection
connection = ssl_wrap_socket(
File "/opt/anaconda/anaconda3/lib/python3.9/site-packages/tornado/netutil.py", line 608, in ssl_wrap_socket
context = ssl_options_to_context(ssl_options)
File "/opt/anaconda/anaconda3/lib/python3.9/site-packages/tornado/netutil.py", line 576, in ssl_options_to_context
context.load_cert_chain(
ssl.SSLError: [SSL] PEM lib (_ssl.c:4065)
ssh는 원격접속할 때나 썼는데 이렇게 포트포워딩은 처음 해봤다.
SSH 포트포워딩 알아보자
이 문제 때문에 골치가 아팠는데 정말 감사합니다!