앞에서 했던 포스트에서 ec2 인스턴스를 만들었고 aws 사이트에서 해당 인스턴스로 접속하였었다. 그 방법 외에도 더 자주 사용하는 방법은 cmd창을 열어서 ssh로 바로 접속하거나 putty나 MobaXterm이라는 원격 접속툴을 사용하는 방법이다. 추가로 파일을 EC2 인스턴스에 파일을 업로드하는 방법도 소개하려 한다.

 

SSH 원격접속하기

 먼저 ssh로 접속하는 방법은 다음과 같다. 

  • ssh -i pem파일명 접속하는username@퍼블릭IP주소

 

이렇게 ssh로 접속하는 방법은 cmd를 열고 원격 서버 접속을 위한 ip나 key값등을 타이핑해야 하는 번거로움이 있고 다수의 서버를 사용하는 입장이라면 이러한 것들을 매번 기억하기도, 일일히 입력하기도 귀찮다. 이러한 귀찮음을 보완해주는 것이 putty라는 GUI 원격 접속 프로그램인데 이건 좀 나온지 오래되기도 하고 무료에다가 굉장히 쓸만해서 주변에서 사용하는 것을 많이 봤던 프로그램이다. 화면 구성은 아래와 같다. 다만 ssh접속으로 하되 GUI 구성이라 좀더 다루기 편하고 내가 이전에 접속했던 세션연결을 저장할 수 있어서 다음에 또 접속하기가 편하다. 그리고 다양한 설정도 셋팅할 수가 있는데 원격접속만 해보고 별다른 셋팅을 해본적은 딱히 없다. 

이렇다.

putty 원격 접속하기

이전에 발급받은 private key인 pem 파일이 있을것이다. 이것을 ppk형태로 변환 시킨 후에 load시켜 putty에 접속해야 한다. 이 때 pem파일을 ppk 파일로 변환하기 위해 puttygen을 사용한다.

  • pem to ppk
    • puttygen을 실행시켜서 load버튼을 눌르고 All Files로 파일 종류를 바꾸고 pem파일을 로드한다.
    • Save private key버튼을 눌러서 적당한 파일이름으로 저장

  • Connection > SSH > Auth > Credentials > Private key file을 등록한다.
  • Session 탭에서 Host Name에 접속하려는 EC2 public IP를 입력하고 Open하면 연결이 되는데 Saved Sessions에 새션 이름을 입력하여 연결 설정을 저장할 수 있다.

  • open후에 창이 뜨고 login as: 라는 칸에 ubuntu라고 입력하면 접속이 된다.

이렇게 ec2 서버에 연결이 되었는데 putty의 단점은 파일 업로드시에 번거롭다는 단점이 있는 것이다. 업로드를 하려면 보통은 파일질라와 같은 FTP프로그램을 추가로 설치해서 하는 경우나 혹은 putty와 함께 설치되는 pscp를 이용하여 업로드를 하는 방법이 있다. 하지만 이와 같은 작업들은 추가로 설치작업을 하는 경우 혹은 커맨트 창에 명령어를 직접 입력하는 등 뭔가의 편의성이 떨어지는 단점이 있다. mobaXterm이 많이 보급되기 전에는 FileZilla로 많이 업로드를 했는데   mobaXterm가 사용하기도 편하고 FTP(SFTP)를 포함하여 이것저것 서비스를 함께 제공한다는 장점으로 요즘은 putty보다는 처음부터 mobaXterm으로 바로 원격 프로그램을 입문하는 경우도 있다.

 

MobaXterm 원격 접속하기

mobaXterm을 실행해보면 GUI 형태로 뭔가 이것저것 기능이 많다는 것을 바로 확인할 수 있다. 접속하기 위해선 Session 아이콘을 클릭하면 된다. 

Session settings 창이 뜨는게 저기에 public IP를 입력하고 username을 ubuntu라고 명시한 후  Use private Key를 체크하고 pem파일을 로드하면 접속이 된다. 

파일 업로드

mobaXterm에서는 SFTP라는 기능을 제공한다. 이것은 SSH File Transfer Protocol의 약자로 SSH가 이미 설치된 상태이기 때문에 바로 사용이 가능하다. SFTP를 아래 화면 처럼 선택하고 public IP주소와 private key를 넣어주면 마찬가지로 SFTP창이 열린다. 

SFTP 셋팅창

 사용법은 매우 간단한데 옮기고자 하는 파일을 드래그하면 이동이 된다. 콘솔창에서 명령어를 입력하는 방식보다 매우 편하다. 또한 SFTP 창 안에서 파일 삭제, 파일 이동, 폴더 생성, 파일 생성 등이 가능하니 파일 업로드 외의 기능으로도 사용이 용이하다.

 SFTP가 아니더라도 github를 이용하여 원격에 있는 파일을 서버에서 내려받는 방식을 이용하기도 하는데 그럴 경우에 gitignore에 있는 설정 파일들은 못 끌어오니 이러한 업로드 방법을 사용하면 될 것이다. 

이전 글을 이어서 진행한다. 인스턴스 생성까지 진행하였다. 생성된 인스턴스는 인스턴스 페이지에서 연결 버튼을 누르면 AWS 사이트 상에서 원격 연결을 할 수 있다.

 

인스턴스 접속

연결
연결
연결된 모습

이렇게 aws 사이트 상에서 원격 접속이 가능하지만 putty나 MobaXterm이라는 원격접속 프로그램을 이용하는 것이 더 일반적이다. putty나 MobaXterm툴 둘다 유명한 툴인데 개인적으로는 파일 업로드의 간편함으로 인해 MobaXterm이라는 툴을 선호한다. 이 부분에 대해서는 일단은 지금은 넘어가고 나중에 다루려고 한다. 

 

탄력적 IP

인스턴스 페이지 우측 상단쪽에 보면 인스턴스 중지, 시작, 재부팅, 종료 등의 탭이 있다. 가끔 서버가 먹통이 될 경우에 인스턴스 중지 혹은 재부팅을 하는 경우가 있을 수 있다. 근데 처음 인스턴스를 생성하고 해당 인스턴스에 대하여 탄력적 IP를 부여하지 않으면 인스턴스 중지할 때마다 IP가 바뀌니까 조심하도록 해야한다. 만약에 EC2에서 특정 서비스를 할 것이라면 반드시 할당해야 하는 것이 탄력적 IP라고 봐도 무방하다. 그리고 저기 탭에서 인스턴스 종료는 인스턴스 삭제이니 절대로 누르지 말 것...

인스턴스

탄력적 IP 할당은 네트워크 및 보안 탭에서 탄력적 IP를 선택하고 탄력적 IP 페이지에서 탄력적 IP 주소를 할당하고 생성된 탄력적 IP를 가지고 탄력적 IP주소 연결을 하여 기존의 인스턴스에 할당하면 된다. (주소 할당 및 연결과정은 생략)

탄력적 IP

탄력적 IP가 인스턴스에 연결이 되면 이제 인스턴스를 중지 시키더라도 IP가 바뀌지 않는다. 이렇게 할당된 탄력적 IP는 1개까지는 무료로 이용할 수 있으나 2개를 사용하는 것부터 과금이 발생된다. 그리고 반드시 탄력적 IP가 할당된 상태에서는 인스턴스와 연결시켜야 하며 사용상태 이어야 한다. 만약에 탄력적 IP를 할당하였는데 인스턴스를 중지 시킨다면 과금이 발생할 것이다. 즉 사용하지 않는 탄력적 IP는 과금의 대상이라는 것이니 주의하자. 

 AWS는 Amazon Web Service의 약자로 가장 많이 사용하는 클라우드 서비스다. 공부 용도라면 Free Tier로 1년 동안은 사용할 수 있다. Free Tier이기 때문에 일부 서비스들만 무료로 사용할 수 있고 컴퓨팅 사양이 그렇게 좋지 않은 것들이라 개인적인 작업으로는 괜찮은데 팀 작업시에 메모리 부족으로 서버가 다운되는 과정이 종종 있긴했었다. 그래도 개인적인 작업 공부 용도로는 클라우드 서비스 중에 AWS 만한 것이 없다.

 

AWS(Amazon Web Service)에 처음 가입한지는 조금 오래됬는데 그게 몇년이 지나고 나서 새로운 이메일 계정으로 다시 만들었다. 처음 만들었던 그 당시에 체크카드로 만들었던 기억이 있는데 최근에도 그 동일한 체크카드로 다시 만들었다. AWS와 비슷한 서비스로 Oracle Cloud는 체크카드로는 가입이 안되고 신용카드로만 가입이 되서 포기한 적이 있다...

 

 기존에는 AWS를 가입하고 root 사용자 계정으로만 로그인 했었는데 IAM 사용자로 AWS를 사용하는 방법이 있다고 한다. 루트 사용자로 인스턴스를 생성하고 IAM 사용자를 만들어서 과금이 발생할 수 있는 권한만 제거해서 AWS 계정을 이용하면 보안상의 이점이 생긴다. 그리고 추가로 다중인증(MFA : Multi-Factor Authentication)을 사용하면 스마트폰에서 OTP 관련 어플을 사용하여 인증이 가능하다.

 

가입하기

 

AWS Console - Signup

 

portal.aws.amazon.com

가입화면

  • 이 화면에서 이메일 주소는 당연히 기억하겠지만 AWS 계정이름을 반드시 기억해야 한다. 
  • 해당 내용을 입력하면 이메일 인증 절차가 진행된다. 확인 코드를 기입하면 다음 단계로 이동한다. 

가입화면

  • 이후에 암호 입력, 주소 입력, 카드정보 입력 등의 과정이 있다. 이 과정은 생략한다. 
  • Support 플랜 중에서는 기본 지원 - 무료를 선택하고 가입을 완료 한다. 

무료선택!

  • 그리고 이제 다시 로그인 화면으로 돌아와서 로그인 폼을 보면 두 종류의 사용자가 있다는 것을 확인할 수 있다.
    • 루트 사용자 : 최고 권한을 가진 사용자
    • IAM 사용자 : 루트 사용자로부터 일바 권한을 부여받은 하위 사용자들
    • 방금 만든 계정으로는 루트 사용자 계정으로 만든 것이고 IAM 사용자는 아직 만들지 않았다.
    • 이제 가입시 입력했던 이메일로 로그인하면 된다. 

:

  • 로그인하면 콘솔 홈으로 들어오는데 처음에 지역설정을 먼저 해야한다. 
  • 이건 AWS를 지원하는 실제 서버들이 있는 장소인데 최대한 가까운 곳인 서울로 셋팅을 해야 한다. 

로그인 후

AWS 서비스

aws에서는 다양한 서비스를 지원해준다. 그 중에 대표적인 것이 EC2, S3, RDS이다. 

  • EC2(Amazon Elastic Compute Cloud)
    • 이건 우리가 사용할 수 있는 실제 컴퓨터라고 봐도 된다. 원하는 OS(윈도우, 리눅스), 사양을 우리가 선택할 수 있으며, 처음 인스턴스를 할당하면 아무것도 설치가 안되어 있는데 여기다가 우리가 원하는 프로그램을 설치하여 사용할 수 있다. EC2 서비스로 하여금 나 대신이 다른 사람이 컴퓨터를 관리해주는 느낌이라 보면 된다. 
  • S3
    • 스토리지 서비스다. 이미지나 CSS나 Javascript 파일을 전문적으로 저장하는 서비스다. 웹하드 느낌이긴하다. 단 대용량 파일들을 올리진 않는다. 그리고 너무 빈번한 Access용도로 쓰기에는 문제가 있다. CDN 자원 같은 것을 둘 때하는 서비스다.
  • RDS
    • 관계형 데이터베이스를 위한 DB를 설치하여 사용할 수 있다. Oracle, MySQL, MS-SQL, PostgreSQL 등 ~ 
    • RDS 무료 티어중에 Oracle 특정 버전이 제외가 됨 > 11g 버전이 지원이 안되었음
  • 이런 서비스들을 인스턴스라고 해서 실행의 단위가 되는 것을 만들어서 사용한다. 
  • 근데 Free Tier라고 해서 이러한 서비스를 막 여러개의 인스턴스를 생성하여 쓴다면 주의해야 한다. 
  • 서비스 사용시간 총합 월 750시간이 넘어가버리면 과금이 된다. 근데 이 750시간이 넉넉해서 인스턴스 하나를 쓰면 상관이 없는데 여러개 쓰면 문제가 된다. 예를 들어서 EC2 Free tier 가능 인스턴스라도 2개를 사용하면 서비스 사용시간이 따블로 측정되고 쉽게 750시간이 넘어가버려서 과금이 되버린다. 그래도 되도록이면 인스턴스를 여러개 만든다면 안쓰는 인스턴스는 꺼야한다. 

EC2 인스턴스 생성

  • 이제 컴퓨터 한대를 대여 받으려고 한다. 검색창에 ec2를 입력해서 EC2 서비스로 이동한다. 

인스턴스 생성

 

  • 인스턴스 시작 클릭

인스턴스 시작

  • 이름 입력 > 인스턴스를 식별하기 위한 이름이다.

이름 입력

  • 운영체제 선택 > 우분투 22.04 버전 (프리티어 되는거만 선택)

OS 선택

  • 인스턴스 유형 > 하드웨어 사양이다. 
  • 종류가 많은데 프리티어는 t2.micro CPU하나, 메모리 1GB짜리인데 정말 Light하게 써야함

인스턴스 유형

  • 키페어 로그인 > 계정을 만들고 로그인할 때 일종의 열쇠를 생성하는 작업이다. 이 열쇠는 공유 X 

열쇠열쇠!

  • 키 페어 생성 클릭시
    • 이름은 아무거나 적고
    • RSA는 키 알고리즘 유형임 > 이걸로 택
    • 일단은 pem으로 택 > pem이라도 ppk로 바꿀 수 있다. 
    • 생성하면 파일 하나가 만들어지는데 이건 잃어버리면 안된다. 

  • 키 보관은 무난하게 .ssh 폴더 만들어서 그 안에 넣는 방법이 있다. 근데 나는 바탕화면 폴더에다가 저장한다.. 그냥 은근히 키 찾을 일이 많아서 보이는 곳에 둠(귀찮아서...)

  • 보안그룹 규칙
    • 편집 버튼을 누르면 펼쳐진다.

넽워크설정

  • 이러한 보안그룹으로 방화벽 설정이 가능하다. 보안 그룹 이름을 적당한걸 적는다. 그리고 default로 ssh 보안 그룹이 지정이 되어 있는데 보안 그룹 규칙 추가 버튼을 눌러서 새롭게 추가한다. ( 근데 이게 지금 설정하지 않더라도 나중에 보안그룹을 따로 추가할 수 있다. )

  • HTTP에 대하여 소스 유형을 위치 무관으로 하여 어디서든 접속할 수 있도록하게 보안 그룹 규칙 2를 지정한다. 

  • 스토리지 구성
    • 프리티어는 최대 30기가까지 사용가능하니까 최대치로 설정한다. 

  • 인스턴스 시작

 

  • 왼쪽 사이드탭에 인스턴스에 EC2 인스턴스가 추가되고 실행중으로 표시가 된다.
  • 저기 보면 실행중으로 표시되는데 이 컴퓨터는 내가 멈추거나 제거하든지, 리부트 하든지의 작업을 할 수 있다. 

 

여기까지 인스턴스 생성까지의 내용이다. 분량이 너무 길어서 다음 글에 이어서 작성하려고 한다. 현재까지의 내용들은 수업 때 녹화한 것들을 기반으로 작성하고 있다. 수업 이전에 내가 혼자서 진행한 부분이 있지만 뭔가 설명을 같이 듣고 다시 정리하니까 이해하기가 쉬워진다. 아무튼 다음 글에 이어서..

+ Recent posts