EC2 2장 - AWS 원격 접속 및 주피터 노트북 사용하기

기운찬곰·2020년 8월 30일
0

AWS

목록 보기
2/5
post-thumbnail

시작하기에 앞서서...

저번시간에 EC2 인스턴스를 생성한 것을 이용해 이번에는 원격으로 접속하는 방법과 주피터 노트북으로 조금 더 쉽게 사용하는 방법을 공부한다.


1. EC2 서버에 접속하기

1단계. PuTTY와 PuTTYGen 다운받기

다운받는 곳 : https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

PuTTY에 대해 간단히 살펴보자면 그 역사는 오래됐습니다. 본래 마이크로소프트 윈도용으로 작성되었으니 다른 다양한 운영체제에도 포팅되었다는 군요. 주 사용용도는 SSH, 텔넷 같은 프로토콜을 이용해 원격접속을 하는데 있습니다. (저같은 경우는 AWS와 Cafe24, 라즈베리파이 접속하면서 많이 씁니다)

PuTTYGen은 오늘 처음 실행해보는건데 RSA및 DSA 키 생성 유틸리티라고 합니다. AWS에서 사용하는 암호 파일 형식은 PEM 파일이지만, PuTTY에서는 RSA 포맷을 사용하기 때문에 PuTTYGen을 이용해서 RSA 포맷으로 변경해줘야 합니다.


2단계. PuTTYGen을 이용해서 포맷 변경

PuTTYGen을 실행할때는 관리자 권한으로 해야 합니다. Conversions -> import key를 선택하고 AWS에서 받은 PEM파일을 선택합니다. 하단에 RSA가 선택된 상태로 Save private key를 클릭하여 저장합니다.


3단계. PuTTY 설정 및 접속

좌측 카테고리에서 Connection->SSH->Auth를 클릭해서 가장 밑에 Private key file ... 에서 Browse를 선택해서 좀 전에 생성한 pem파일을 선택합니다.

그런다음 카테고리에서 Session선택한 후 Host Name을 탄력적 IP로 할당 받은 IP를 입력해주면 됩니다. 처음 로그인 시에는 아이디가 ubuntu입니다.


2. 주피터 노트북 사용

1. 설치

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를 통해서 확인한 패키지들의 최신 버전에 따라서 패키지들의 버전을 업그레이드 해주는 명령어입니다.

2. 비밀번호 설정

python3 접속후
>> from notebook.auth import passwd
>> password(algorithm='sha1')

이렇게 나온 값을 잘 기록해놓는다.


3. 주피터 환경설정

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' # 주피터 접속시 가장 먼저 보일 폴더

4. 실행

sudo jupyter-notebook --allow-root

명령어 입력 이후에는 다음과 같이 8888번 기본 포트로 주피터가 열린 것을 확인할 수 있습니다.


5. AWS 보안 그룹 수정

다만 아직은 퍼블릭 주소로 접속이 안되는데 이는 AWS EC2에서 포트를 열어주지 않았기 때문입니다.

보안그룹에 들어가서 인바운드 규칙을 수정합니다.

8888포트에 대해 접속할 수 있도록 설정하였습니다.


6. 접속

접속시에는 퍼블릭 주소:8888로 접속합니다.

이렇게 쓰면 폴더 구조도 한눈에 보기 쉽고 터미널도 여러개 열 수도 있기 때문에 효율적입니다.


7. 백그라운드 실행

Putty를 보면 계속 실행중인 상태인 것을 볼 수 있습니다. Puttty를 종료시키면 주피터도 종료가 되므로 항상 실행되도록 해야하는데 이게 일정시간만 되면 자동으로 죽어버리는 문제가 있습니다.

따라서 이를 위해 백그라운드 실행으로 전환하겠습니다. 일단 실행중인 프로세스를 정지시키기 위해 Ctrl+z를 눌려줍니다.

참고로 Ctrl+c는 프로세스 종료이고, Ctrl+z는 프로세스 정지라는 차이가 있습니다. 차이점은 종료된 프로세스는 끝이지만, 정지된 프로세스는 다시 재개할 수 있습니다.

다시 살리려면 fg % 숫자를 입력해주면 됩니다. 여기서 숫자는 [ ] 사이에 있는 숫자를 말합니다.

이제 중지시킨 프로세스를 백그라운드 작업으로 전환해줍니다. bg를 입력해줍니다. 그리고 jobs 명령어를 통해 확인해보면 계속 Running중인것을 알 수 있습니다.

참고로 bg로 실행중인 것을 중지시키고 싶다면 fg % 숫자를 통해 foreground로 옮겨서 Ctrl+c를 누르면 됩니다.


3. 주피터 노트북 HTTPS 적용하기

위에서 아주 간단한 작업만 더 해주면 됩니다.

1단계. 먼저 주피터 노트북을 종료해줍니다.

2단계. 공인 인증서가 있으면 더 좋지만 사설 인증서를 이용해 우리가 직접 만들어 적용할수있습니다.

mkdir ssl
cd ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout "cert.key" -out "cert.pem" -batch
  • openssl : 프로그램
  • days : 유효기간
  • rsa:1024 => RSA 알고리즘을 적용
  • cert.key => 개인키 파일
  • cert.pem => 인증서 파일

3단계. 주피터 환경설정 파일 열어서 추가

 sudo nano /home/ubuntu/.jupyter/jupyter_notebook_config.py
 
 c.NotebookApp.certfile = u'~/cert.pem'
 c.NotebookApp.keyfile = u'~/cert.key'

4단계. 주피터 노트북 다시 실행

공인 인증서가 아니므로 이렇게 나타나는데 그냥 무시하고 안전하지 않음으로 이동하기 합니다. 참고로 접속할때 https:// 입니다. 자꾸 까먹고 왜 안되지 할 때가 많습니다.


마침

나동빈님 유튜브와 블로그를 많이 참고했습니다.😀😀 다음시간에는 리눅스 계정을 새로 만들고 계정관련한 내용을 다뤄보도록 하겠습니다.

참고 사이트

profile
배움을 좋아합니다. 새로운 것을 좋아합니다.

0개의 댓글