상세 컨텐츠

본문 제목

EC2 연결 [SSH, Key]

AWS

by 성찬우 2022. 7. 31. 22:46

본문

EC2는 AWS 에서 제공하는 서비스중 하나로 가장 흔하게 사용된다. 

 

쉽게 말해서 , 독립적인 컴퓨터 한대를 온라인상에서 빌리는 것이다. (가상 서버 구축)

 

현실과 비교했을 때랑 매우 유사한데 , 

원하는 스팩만큼 사용한 만큼 비용이 나오며(좋을 수록 비싸지겠죠 당연히)

 

특징으로는 

EBS Elastic Block Store -> 영구 스토리지를 이용해 저장이 가능.

EIP Elasic Ip Address -> 고정 ip 할당

 

Elastic 지겹도록 나와서 대충 뜻을 보면

이런 의미다. 

 

어디서 컴퓨터 서버를 빌리는 것일까?

 

AWS는 나라별로 데이터 센터(다수의 컴퓨터 공간)를 가지고 있다.

EC2에서는 이 나라별로 할당 되어있는 데이터센터에서 고르면 된다.

 

인스턴스 Instance

인스턴스란 하나의 컴퓨터를 서버를 의미한다. 

AWS웹 사이트에서 인스턴스라는 항목을 확인 할 수 있는데 

 

 

바로 여기서 인스턴스를 시작 즉, 하나의 컴퓨터를 임대 할 수 있다. 

 

당연히 각각의 인스턴스를 중지, 재부팅, 종료 , 설정 등등 세부적인 부분 까지 설정이 가능하다. 

 

프리티어 

 

AWS 프리 티어란 일부 AWS 서비스를 매월 특정 최대 사용량 까지 무료로 사용할 수 있으며 

해당 상품은 처음 가입한 날부터 12개월간 한정된 사용량을 제공한다. 

 

무료 사용기간인 12개월을 넘거나 사용량이 초과될 경우 요금이 부과된다. 

프리티어라고 무조건 무료는 아니라는 것이다. 

 

SSH ,  KEY 

ssh 라는 단어는 git 유저라면 자주 봤을 단어이다. 

Secure Shell 의 줄임말로 Protocol의 역할을 한다. 즉, 다른 컴퓨터로도 해당 ec2에 접속을 돕는 다는 것이다. 

*protocol : 서로 다른 통신 장비끼리 주고받는 데이터의 양식 및 규칙

우리는 웹 브라우저 사용시 HTTP 프로토콜을 사용한다.

 

서로 다른 컴퓨터 끼리 통신을 하기 위해서 사용되는 것이 바로 ssh protocol 이라고 생각하면 될 것같다. 

 

ssh 파일은 프로토콜 즉 2대 이상의 컴퓨터가 연결되야한다. 통신 규약 이니까

즉 기본적으로 SSH 커낵션을 위해서는 2대의 컴퓨터가 필요하다. 

클라이언트 ---- 서버 

 

http 프로토콜과 매우 유사한 양상을 띈다. 

실제로도 요청을 서버로 보내고 응답을 서버에서 클라이언트로 보낸다. 

 

당연하지만 클라이언트-서버 2개의 컴퓨터 모두다 ssh 프로그램이 설치되어 있어야한다. 

햇갈리면 안되는 것은 ssh server 와 ssh client 그리고 server, client 는 다른 개념임을 알아야한다. 

 

SSH 의 장점

HTTPS 에서도 요청과 응답 통신을 암호화한다는 것은 알고 있을 것이다. 

SSH 또한 Client 와 Host의 통신이 암호화 되어있다. 

*Host : 접속 대상 (우리가 산 컴퓨터)

*Client : Host에 접속하려는 컴퓨터

 

KEY

키는 딱 들어봐도 암호화와 관련 되있는 것 같다. 

암호화에는 다양한 방법이 존재한다. 

 

대칭 암호화 (하나의 Secret Key)

비대칭 암호화 (Public Key + Private Key = Secret Key)

디피 - 헬먼 키 교환 알고리즘 (고도화된 방법 - Key를 감출 알고리즘)

 

그래서 안전 하냐고? 아니요;

 

SSH 연결이 마치기 전에 누군가 Client 또는 Host 로 위장해서 정보를 조작할 가능성이 있다. 

 

이를 방지 하기 위해서 SSH 에서는 MAC Message Authentication Code를 통해서 데이터의 무결성을 보장한다.

 

이때 사용되는 것이 Hash 함수인데 

 

Hash함수가 전송에 사용되는 모든 것 (데이터, Secret Key, Packet Sequence Number(아마 tcp 통신 을 이야기하는듯..?))들을 비교해서 MAC 값을 만들어 Host에게 보내고 

Host 이미 받은 정보를 Hashing 하여 MAC값이 일치 하는지 확인한다. 

 

Hash 함수는 비교의 목적이지 암호화 및 통신에 의미가 있는것이 아니기 때문에

단방향 통신이다. 

 

 

 

그래서 안전 하냐고? 아직 이요..;

이렇게 해서 MAC값까지 비교하고 커낵션이 시작된다. 

이제 접속을 시도하는 유저가 권한이 있는 지를 확인해야한다. 

 

권한 확인에는 

  • Password (단순 password 입력으로 확인 - Not Recommend - 부르트포스 Attack 에 취약)
  • Rsa (내 컴퓨터에 SSH 키를 생성하여 나의 Public Key를 Host의 인가 목록에 추가하여 나를 인증한다.                              즉, Public Key와 매칭되는 Private Key가 존재하는 내 컴퓨터는 인증이 가능하다.)

 

 

 

'AWS' 카테고리의 다른 글

S3에서 파일을 업로드 해보자 (node)  (0) 2023.06.27
AWS S3 적용하기  (0) 2022.08.02
CACHE 캐시 에 관하여  (0) 2022.07.30
Amazon 의 기본 개념 [ Amazon S3 , CloudFront]  (0) 2022.07.29

관련글 더보기

댓글 영역