안녕하세요. IT 엘도라도 에 오신 것을 환영합니다.
글을 쓰는 것은 귀찮지만 다시 찾아보는 것은 더 귀찮습니다.
완전한 나만의 것으로 만들기 위해 지식을 차곡차곡 저장해 보아요.   포스팅 둘러보기 ▼

AWS (Amazon Web Service)

[AWS] EC2 생성 (Amazon Linux 2) + PuTTY SSH 접속

피그브라더 2020. 10. 5. 23:37

AWS EC2는 Elastic Compute Cloud의 약자로, 서버로 사용할 수 있도록 AWS에서 제공해주는 하나의 물리적인 컴퓨터라고 생각하면 된다. 배포를 해본 적 없는 초보 개발자들은 AWS에서 제공해주는 Elastic Beanstalk, Kubernetes 등의 배포 패키지를 이용하면 훨씬 더 간편하게 배포를 해볼 수 있다. 그러나 이러한 패키지들은 배포를 위한 대부분의 중요한 설정들을 내부에 숨겨두었기 때문에 배포의 원리를 이해하고 공부해보기에는 적합하지 않다. 그래서 필자는 초보 개발자도 직접 EC2 인스턴스를 생성하고 배포를 위한 각종 설정들을 따라해 보면서 공부해보기를 권장한다. 참고로 AWS 계정은 가입하고 1년 동안은 무료로 몇 가지 리소스들을 제공해주는데, 그중 하나가 바로 EC2이다. 따라서 처음에 배포와 관련된 공부를 해보기에도 매우 적합하다. 이번 포스팅에서는 큰 건 다루지 않고, 간단히 EC2 인스턴스를 하나 생성해보면서 그 과정에서 알고 넘어가야 하는 몇 가지 중요한 개념(AMI, 인스턴스 유형, 보안 그룹, 키 페어 등)들을 짚어볼 것이다. 그리고 마지막 부분에는 그렇게 생성한 EC2 인스턴스에 SSH로 접속을 해보는 방법을 알아볼 것이다(사실 그냥 링크로 첨부할 것이다). 단 이는 Windows 환경 기준이다.

 

설명을 진행하기에 앞서, 먼저 AWS 사이트(https://aws.amazon.com/ko/)에 접속하여 AWS 계정을 생성하고 로그인을 하도록 한다. 이 과정은 크게 어렵지 않기 때문에 굳이 이번 포스팅에서 다루지 않도록 할 것이다. 로그인을 한 뒤 상단의 [서비스] 탭을 클릭하면 다음과 같이 [EC2]가 맨 처음에 보일 것이다. 이것을 클릭하여 EC2 페이지로 들어가자. 이제 설명을 차근차근 따라가 보자.

 

 

1. AWS EC2 인스턴스 생성하기

1-1. 인스턴스 시작

EC2 페이지에 접속하면 우측 상단에 [인스턴스 시작] 버튼을 클릭한다. 그러면 EC2 인스턴스 생성을 위한 단계에 진입한다.

 


1-2. AMI 선택

첫 번째 단계는 AMI(Amazon Machine Image)를 선택하는 단계이다. AMI란 서버로 사용되는 컴퓨터에 기본적으로 설치하게 되는 운영체제와 각종 소프트웨어의 조합을 이미지로 만들어놓은 것들을 말한다. 즉 AMI를 선택하는 것은 쉽게 말해서 해당 EC2 인스턴스에 어떠한 운영체제와 소프트웨어를 설치할 것인가를 결정하는 것이다. 필자는 "Amazon Linux 2 AMI (HVM)" AMI를 선택하여 진행해보도록 하겠다. 참고로 프리 티어(AWS 계정 가입 후 1년 동안 무료로 사용 가능한 리소스)에 해당하는 AMI에는 아래 사진에서 보이는 것과 같이 [프리 티어 사용 가능]이라는 표시가 되어 있다.

 


1-3. 인스턴스 유형 선택

두 번째 단계는 인스턴스 유형을 선택하는 단계이다. 쉽게 말해서 컴퓨터의 사양(CPU 성능, 메모리 용량, 저장 장치 용량 등)을 결정하는 것이다. 이 단계에서는 프리 티어로 사용 가능한 것이 "t2.micro"밖에 없기 때문에 필자는 이것을 선택하여 진행하도록 하겠다. 이때 [검토 및 시작] 버튼이 아닌 [다음] 버튼을 눌러서 다음 단계로 넘어가도록 하자. 안 그러면 단계들을 스킵하게 될 것이다.

 


1-4. 인스턴스 구성, 스토리지 추가, 태그 추가 (생략)

세 번째 단계부터 다섯 번째 단계까지에 해당하는 이 단계들은 여기서 다루지 않도록 하겠다. 초보자가 배포에 입문하는 데 있어서 중요한 내용은 아니라고 판단했기 때문이다. [다음]을 눌러서 여섯 번째 단계까지 그냥 넘어가도록 하자.


1-5. 보안 그룹 구성

여섯 번째 단계는 보안 그룹을 구성하는 단계이다. 보안 그룹이라는 것은 쉽게 말해서 어떻게 외부에서 해당 EC2 인스턴스로 접근할 수 있는지(인바운드 정책)와 어떻게 해당 EC2 인스턴스에서 외부로 접근할 수 있는지(아웃바운드 정책)에 대해 정해놓은 규칙을 말한다. 이렇게 생성해놓은 규칙(= 보안 그룹)은 여러 인스턴스에서 사용할 수 있다. 이 단계에서는 인바운드 규칙만을 설정한다. 즉 어떻게 해당 EC2 인스턴스로 접근할 수 있는지에 관한 규칙을 정의하는 것이다.

 

 

SSH 접속은 뒤에서 알아보겠지만 원격에서 해당 EC2 인스턴스에 접속하기 위한 수단에 해당한다. SSH 프로토콜은 기본적으로 22번 포트를 사용한다. 그리고 이러한 SSH 접속은 기본적으로 개발자에 해당하는 나만 접근할 수 있도록 하는 것이 안전하므로 소스는 [내 IP]를 선택하였다. 만약 내가 개발하는 장소가 바뀌면 그때마다 자신의 IP로 해당 설정을 바꿔줘야 할 것이다.

 

HTTP, HTTPS 접속은 기본적으로 각각 80번 포트와 443번 포트를 사용한다. 웹 브라우저에 http로 시작하는 주소를 입력하여 들어오면 기본적으로 80번 포트에 접속을 요청하는 것을 의미하며, https로 시작하는 주소를 입력하여 들어오면 기본적으로 443번 포트에 접속을 요청하는 것으로 처리된다. 이러한 HTTP, HTTPS 접속은 당연히 모두에게 열려 있어야 하므로 소스로 [위치 무관]을 선택하였다. 그래야 다른 사람들이 내 사이트에 접속이 가능할 것이기 때문이다.


1-6. 인스턴스 시작 검토

이제 지금까지 설정한 단계들이 맞는지 한 번 더 확인하고, 맞다면 [시작하기]를 클릭하자.

 


1-7. 키 페어 생성

[시작하기]를 클릭하면 다음과 같이 키 페어(Key Pair)와 관련한 창이 하나 뜰 것이다. 이 부분을 이해하려면 공개키와 개인키를 이용한 비대칭키 암호화 방식에 대해 알고 있어야 하는데, 이에 대해서는 여기를 참조하기 바란다. 간단히 설명하자면, 외부에서 SSH로 EC2 인스턴스에 안전하게 접속하기 위해서는 해당 EC2 인스턴스에 공개키(Public Key)를 저장해 두고 접속하려는 사람의 컴퓨터에는 개인키(Private Key)를 은밀하게(그리고 안전하게) 저장해두어야 한다. 이 개인키는 절대로 유출되어서는 안 되므로 GitHub의 공개 리포지토리에 올리는 등의 실수를 범하면 안 된다. 결국 이 단계는 키의 쌍(공개키와 개인키)을 생성하고 그 개인키를 다운로드하는 절차에 해당한다고 볼 수 있다. 개인키 파일을 잃어버리면 다시 다운로드할 수 없기 때문에 기억하기 좋고 안전한 곳에 잘 저장해두기 바란다. 생성할 키 페어의 이름을 입력하고 [키 페어 다운로드]를 클릭하여 개인키를 다운로드하자. 이후 [인스턴스 시작] 버튼을 클릭하면 드디어 EC2 인스턴스 생성이 완료된다.

 

 

2. AWS EC2 인스턴스 SSH 접속하기 (PuTTY in Windows)

Windows 환경에서, 앞서 생성한 EC2 인스턴스에 SSH로 원격 접속을 하려면 크게 다음과 같이 세 절차를 밟아야 한다.

 

  1. SSH 클라이언트에 해당하는 PuTTY 다운로드
  2. PuTTYgen 프로그램을 이용하여 개인키 변환 (.pem → .ppk)
  3. PuTTY 프로그램을 이용하여 EC2 인스턴스에 SSH 원격 접속

 

PuTTY 다운로드는 이곳에서 가능하다. 그리고 2번과 3번에 해당하는 과정은 AWS에서 제공하는 이 설명을 참고하자. 설명이 너무 잘 되어 있어서 굳이 여기서 설명을 반복하지 않고 링크로 대체하는 점 이해 바란다.