Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
05-15 13:20
관리 메뉴

nomad-programmer

[Cloud/AWS] 공개키 본문

Cloud/AWS

[Cloud/AWS] 공개키

scii 2020. 6. 29. 11:40

키 쌍(key pair)는 EC2 인스턴스에 접속하기 위해 사용하는 암호화된 파일이다. AWS에서는 보안 문제 때문에 EC2 인스턴스에 접속할 때 ID, 비밀번호 방식을 권장하지 않고 있다. (EC2 Linux 인스턴스의 경우 ID, 비밀번호 방식은 기본적으로 사용하지 않도록 설정되어 있다)
키 쌍 접속 방식은 ID와 비밀번호를 입력하지 않고도 접속할 수 있으며 키 쌍 파일만 분실하지만 않으면 매우 안전하다.
이 키 쌍은 RSA 공배 키 알고리즘(Public Key Algorithm)을 사용한다.

 

암호화 방식에는 두 가지가 있는데 대칭 키와 공개 키 방식이 대표적이다.

# 대칭 키 방식은 암호화(Encyption)하는 키와 복호화(Description)하는 키가 동일하여 이 대칭 키를 상대방에게 전달하는 구간에서 키가 노출되는 단점이 있다. 

# 공개 키 방식은 이러한 단점을 개선해 암호화하는 키와 복호화하는 키를 다르게 설계했고, 암호화하는 키는 공개 키라고 하여 외부에 노출되어도 안전하다. 공개 키에서 복호화에 필요한 비밀 키 혹은 개인 키(Private Key)를 추출하는 것은 매우 어렵다.

 

AWS의 키 쌍은 공개 키(Public Key), 비밀 키 혹은 개인 키(Private Key)가 쌍을 이루고 있기 때문에 키 쌍이라고 부른다. 그리고 키 쌍은 리전별로 관리된다.
키 쌍을 사용하면 보안성도 높일 수 있고, ID와 비밀번호를 일일이 입력하지 않아도 되기 때문에 자동화에도 유리하다. (일반적으로 SSH 명령의 옵션에 ID와 비밀번호를 지정하여 접속하도록 자동화할 수 있지만 비밀번호가 노출되는 치명적인 단점이 있다)

 

키 쌍 파일(pem)을 분실했다면?

다음 순서대로 EC2 인스턴스의 공개 키를 교체하면 된다.

  1. 키 쌍을 분실한 EC2 인스턴스를 정지(stop)
  2. 공개 키 교체용 임시 EC2 인스턴스를 생성(반드시 같은 AZ에 생성)
  3. ELASTIC BLOCK STORE -> Volumes에서 키 쌍을 분실한 EC2 인스턴스의 볼륨을 Detach
  4. 키 쌍을 분실한 EC2 인스턴스의 볼륨을 선택하고 임시 EC2 인스턴스에 Attach
  5. 임시 EC2 인스턴스에 SSH로 접속한 뒤 sudo mount /dev/sdf1 /mnt를 입력하여 볼륨을 마운트
  6. /mnt/home/ec2-user/.ssh/authorized_keys 파일을 수정하여 새 공개 키로 교체
  7. sudo umount /mnt를 입력하여 볼륨 마운트 해제. ELASTIC BLOCK STORE -> Volumes로 이동한 뒤 임시 EC2 인스턴스에서 키 쌍을 분실한 EC2 인스턴스의 볼륨을 Detach
  8. 키 쌍을 분실한 EC2 인스턴스의 볼륨을 원래 EC2 인스턴스에 Attatch(Device는 /dev/xvda로 설정)
  9. EC2 인스턴스를 시작(start), 교체한 키 쌍을 사용하여 SSH로 접속

 

AWS에서 외부 키 쌍 파일 사용

이미 가지고 있는 키 쌍 파일이나 외부에서 생성한 키 쌍 파일을 AWS 키 쌍으로 넣는 방법이 있다.
특히 Linux나 Mac OS X를 사용하다 보면 SSH 키 쌍 파일을 여러 개 생성해 가지고 있게 된다. AWS에서 또 다시 새로운 키 쌍을 생성한다면 키 쌍 파일 관리가 다소 부담스러울 수 있다. 따라서 이미 가지고 있는 키 쌍 파일을 활용하면 키 쌍 파일 관리 부담을 덜 수 있다.

PuTTY로 생성한 키 쌍 파일 활용

PUTTYGEN.exe를 실행해 Generate 버튼을 클릭하여 생성한다.

키 쌍 파일 생성
생성한 모습
생성한 공개키를 AWS에 등록

이렇게하면 PuTTY에서 생성한 공개 키를 등록할 수 있다.

 

Linux와 Mac OS X에서 생성한 키 쌍 파일 활용

자신의 계정에 SSH 키 쌍 파일이 있는지 확인한다. 

ls -alF ~/.ssh

SSH 키 쌍 파일이 없다면 아래의 명령으로 SSH 키 쌍 파일을 생성한다.

ssh-keygen -t rsa

id_rsa, id_rsa, pub 경로는 변경하지 않고 기본값 그대로 사용한다. 그리고 Passphrase는 아무것도 설정하지 않고 기본값 그대로 공백을 사용한다.

 

이미 생성된 EC2 인스턴스에서 공개 키 바꾸는 방법

EC2 인스턴스는 새로 생성할 때만 키 쌍을 선택할 수 있다. 생성된 이후에는 EC2 페이지에서 키 쌍을 바꾸는 기능이 없다. Linux가 설치된 EC2 인스턴스는 SSH로 접속한 뒤 파일을 약간 편집하면 공개 키를 추가하거나 바꿀 수 있다.

먼저 공개 키 형태를 알아보자. Windows에서 PuTTY Key Generator로 생성한 공개 키는 다음과 같은 형태이다.

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20200629"
ASFDDSFDWEWERE34323434ASDFSDFSDFeersadfasdfzxc#$#@#$dsadflCGHyJQJBX
i5Q6YCzp234UCJ58t4/AszfNxRzU2nl5ba0rf9SJXICGmn510DmdGp+y4lEA
8wqwerqwerqwefasdfasersadfMCtgpqDk8PEf+jc1dmqirBgn8BR0qfrKDiE1ur/
c4Wc07yvGaNJGh9nKkwNXAASQSSSVr+Mw7T9mqMOMFt30wUtSDioIvP7FG
AZGo/QWrsadfsafasdfasdfqwerhfgjhdghjdfhwrfgwergefqefgjVboLSX5D/4AbfK
WERSADFASDFQWERSDF@#$@#SDF#423424123rdsfasZ5Z9MmjpVQ==
---- END SSH2 PUBLIC KEY ----

그리고 Linux와 Mac OS X에서 공개 키는 사용자 홈 디렉토리의 .ssh 디렉토리 아래 id_rsa.pub 파일이다. id_rsa.pub파일은 다음과 같은 형태이다. 여러 줄로 보이지만 여러 줄이 아니라 한 줄이다.

ssh-rsa ASFDDSFDWEWERE34323434ASDFSDFSDFeersadfasdfzxc#$#@#$dsadflCGHyJQJBXi5Q6YCzp234UCJ58t4/AszfNxRzU2nl5ba0rf9SJXICGmn510DmdGp+y4lEA8wqwerqwerqwefasdfasersadfMCtgpqDk8PEf+jc1dmqirBgn8BR0qfrKDiE1urc4Wc07yvGaNJGh9nKkwNXAASQSSSVr+Mw7T9mqMOMFt30wUtSDioIvP7FGAZGo/QWrsadfsafasdfasdfqwerhfgjhdghjdfhwrfgwergefqefgjVboLSX5D/4AbfKWERSADFASDFQWERSDF@#$@#SDF#423424123rdsfasZ5Z9MmjpVQ= aaa@ubuntu

EC2 인스턴스에 SSH로 접속하여 사용자 홈 디렉토리 밑에 .ssh 디렉토리에 있는 authorized_keys 파일을 편집한다. (~/.ssh/authorized_keys)
이 파일에 공개 키가 등록되어 있으면 가지고 있는 개인 키 파일(pem 혹은 ppk)을 통해 SSH로 접속할 수 있다.

$HOME/.ssh/authorized_keys 파일의 예

ssh-rsa ASFDDSFDWEWERE34323434ASDFSDFSDFeersadfasdfzxc#$#@#$dsadflCGHyJQJBXi5Q6YCzp234UCJ58t4/AszfNxRzU2nl5ba0rf9SJXICGmn510DmdGp+y4lEA8wqwerqwerqwefasdfasersadfMCtgpqDk8PEf+jc1dmqirBgn8BR0qfrKDiE1urc4Wc07yvGaNJGh9nKkwNXAASQSSSVr+Mw7T9mqMOMFt30wUtSDioIvP7FGAZGo/QWrsadfsafasdfasdfqwerhfgjhdghjdfhwrfgwergefqefgjVboLSX5D/4AbfKWERSADFASDFQWERSDF@#$@#SDF#423424123rdsfasZ5Z9MmjpVQ= aaa@ubuntu
ssh-rsa WERDFXZCV23423W434ASDFSDFSDFeersadfasdfzxc#$#@#$dsadflCGHyJQJBXi5Q6YCzp234UCJ58t4/AszfNxRzU2nl5ba0rf9SJXICGmn510DmdGp+y4lEA8wqwerqwerqwefasdfasersadfMCtgpqDk8PEf+jc1dmqirBgn8BR0qfrKDiE1urc4Wc07yvGaNJGh9nKkwNXAASQSSSVr+Mw7T9mqMOMFt30wUtSDioIvP7FGAZGo/QWrsadfsafasdfasdfqwerhfgjhdghjdfhwrfgwergefqefgjVboLSX5D/4AbfKWERSADFASDFQWERSDF@#$@#SDF#423424123rdsfDFSAEFSASDFDD pyrasis
ssh-rsa QWERFGCVBDFASDFASDF@#$sdfsadfrsadfasdfzxc#$#@#$dsadflCGHyJQJBXi5Q6YCzp234UCJ58t4/AszfNxRzU2nl5ba0rf9SJXICGmn510DmdGp+y4lEA8wqwerqwerqwefasdfasersadfMCtgpqDk8PEf+jc1dmqirBgn8BR0qfrKDiE1urc4Wc07yvGaNJGh9nKkwNXAASQSSSVr+Mw7T9mqMOMFt30wUtSDioIvP7FGAZGo/QWrsadfsafasdfasdfqwerhfgjhdghjdfhwrfgwergefqefgjVboLSX5D/4AbfKWERSADFASDFQWERSDF@#$@#SDF#423424123rddssa##@!@#$#@ad rsa-key-20200631

기본적인 형식은 'ssh-rsa <공개 키> <코멘트>' 형식이다. 앞서 설명한 것처럼 여러 줄이 아니라 한 줄인 것에 유의해야 한다. id_rsa.pub 파일의 경우 그대로 복사해서 붙여넣으면 된다.

하지만, PuTTY Key Generator로 생성한 파일은 일정한 형태로 개행이 되어 있다. 그래서 위와 같이 형식을 맞춰줘야 한다. 맨 얖에 ssh-rsa를 입력하고 한 칸 띄운 뒤 키를 붙여넣고 여러 줄로 뒨 것을 한줄로 맞추어준다. 그리고 한 칸 띄운 뒤 코멘트로 사용할 rsa-key-20200631를 입력하면 된다.

authorized_keys 파일을 저장하면 앞에서 추가한 공개 키에 맞는 개인 키로 SSH 접속을 할 수 있게 된다. (원래 존재하던 공개 키를 삭제하고 새로운 공개 키만 넣어도 된다)

Comments