저번시간에 EC2 인스턴스를 생성한 것을 이용해 이번에는 원격으로 접속하는 방법과 주피터 노트북으로 조금 더 쉽게 사용하는 방법을 공부한다.
다운받는 곳 : https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
PuTTY에 대해 간단히 살펴보자면 그 역사는 오래됐습니다. 본래 마이크로소프트 윈도용으로 작성되었으니 다른 다양한 운영체제에도 포팅되었다는 군요. 주 사용용도는 SSH, 텔넷 같은 프로토콜을 이용해 원격접속을 하는데 있습니다. (저같은 경우는 AWS와 Cafe24, 라즈베리파이 접속하면서 많이 씁니다)
PuTTYGen은 오늘 처음 실행해보는건데 RSA및 DSA 키 생성 유틸리티라고 합니다. AWS에서 사용하는 암호 파일 형식은 PEM 파일이지만, PuTTY에서는 RSA 포맷을 사용하기 때문에 PuTTYGen을 이용해서 RSA 포맷으로 변경해줘야 합니다.
PuTTYGen을 실행할때는 관리자 권한으로 해야 합니다. Conversions -> import key
를 선택하고 AWS에서 받은 PEM파일을 선택합니다. 하단에 RSA가 선택된 상태로 Save private key를 클릭하여 저장합니다.
좌측 카테고리에서 Connection->SSH->Auth를 클릭해서 가장 밑에 Private key file ... 에서 Browse를 선택해서 좀 전에 생성한 pem파일을 선택합니다.
그런다음 카테고리에서 Session선택한 후 Host Name을 탄력적 IP로 할당 받은 IP를 입력해주면 됩니다. 처음 로그인 시에는 아이디가 ubuntu입니다.
Putty만을 이용해서 사용해도 뭐 상관은 없겠지만, 저 같은 경우는 주피터 노트북을 설치해서 좀 더 쉽게 쓰는 편입니다.
sudo apt-get update
sudo apt-get install python3-pip
sudo pip3 install notebook
python3는 기본적으로 깔려있지만 python3-pip는 설치해줘야 합니다. 그래야 pip3를 쓸 수 있습니다.
참고로...
apt-get update
는 실제로 새로운 버전을 설치하는게 아니라, 저장소로 부터 패키지 리스트를 다운 받아서 그것들을 업데이트합니다. 그렇게 되면 python3-pip는 최신버전으로 설치할 수 있는 겁니다.apt-get upgrade
는 apt-get update를 통해서 확인한 패키지들의 최신 버전에 따라서 패키지들의 버전을 업그레이드 해주는 명령어입니다.
python3 접속후
>> from notebook.auth import passwd
>> password(algorithm='sha1')
이렇게 나온 값을 잘 기록해놓는다.
jupyter notebook --generate-config
sudo nano 환경설정파일.py
alt+/
로 파일 맨 끝으로 이동한 후 다음과 같이 추가해주면 됩니다.
c = get_config()
c.NotebookApp.password = u'sha1:{해시 값}'
c.NotebookApp.ip = '{내부 아이피}'
c.NotebookApp.notebook_dir = u'/home' # 주피터 접속시 가장 먼저 보일 폴더
sudo jupyter-notebook --allow-root
명령어 입력 이후에는 다음과 같이 8888번 기본 포트로 주피터가 열린 것을 확인할 수 있습니다.
다만 아직은 퍼블릭 주소로 접속이 안되는데 이는 AWS EC2에서 포트를 열어주지 않았기 때문입니다.
보안그룹에 들어가서 인바운드 규칙을 수정합니다.
8888포트에 대해 접속할 수 있도록 설정하였습니다.
접속시에는 퍼블릭 주소:8888로 접속합니다.
이렇게 쓰면 폴더 구조도 한눈에 보기 쉽고 터미널도 여러개 열 수도 있기 때문에 효율적입니다.
Putty를 보면 계속 실행중인 상태인 것을 볼 수 있습니다. Puttty를 종료시키면 주피터도 종료가 되므로 항상 실행되도록 해야하는데 이게 일정시간만 되면 자동으로 죽어버리는 문제가 있습니다.
따라서 이를 위해 백그라운드 실행으로 전환하겠습니다. 일단 실행중인 프로세스를 정지시키기 위해 Ctrl+z
를 눌려줍니다.
참고로 Ctrl+c는 프로세스 종료이고, Ctrl+z는 프로세스 정지라는 차이가 있습니다. 차이점은 종료된 프로세스는 끝이지만, 정지된 프로세스는 다시 재개할 수 있습니다.
다시 살리려면fg % 숫자
를 입력해주면 됩니다. 여기서 숫자는 [ ] 사이에 있는 숫자를 말합니다.
이제 중지시킨 프로세스를 백그라운드 작업으로 전환해줍니다. bg
를 입력해줍니다. 그리고 jobs
명령어를 통해 확인해보면 계속 Running중인것을 알 수 있습니다.
참고로 bg로 실행중인 것을 중지시키고 싶다면 fg % 숫자
를 통해 foreground로 옮겨서 Ctrl+c를 누르면 됩니다.
위에서 아주 간단한 작업만 더 해주면 됩니다.
1단계. 먼저 주피터 노트북을 종료해줍니다.
2단계. 공인 인증서가 있으면 더 좋지만 사설 인증서를 이용해 우리가 직접 만들어 적용할수있습니다.
mkdir ssl
cd ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout "cert.key" -out "cert.pem" -batch
3단계. 주피터 환경설정 파일 열어서 추가
sudo nano /home/ubuntu/.jupyter/jupyter_notebook_config.py
c.NotebookApp.certfile = u'~/cert.pem'
c.NotebookApp.keyfile = u'~/cert.key'
4단계. 주피터 노트북 다시 실행
공인 인증서가 아니므로 이렇게 나타나는데 그냥 무시하고 안전하지 않음으로 이동하기 합니다. 참고로 접속할때 https:// 입니다. 자꾸 까먹고 왜 안되지 할 때가 많습니다.
나동빈님 유튜브와 블로그를 많이 참고했습니다.😀😀 다음시간에는 리눅스 계정을 새로 만들고 계정관련한 내용을 다뤄보도록 하겠습니다.
참고 사이트