정말 드물게 여러 매니지드를 거치거나 관리 주체가 명확하지 않은 시스템을 관리하다 보면 EC2 키페어를 분실하는 경우가 생긴다.
거기에 서버 접속 계정 까지 분실한다면 EC2 사용을 못하는 경우가 생길 수도 있다.
이럴 때 EC2에 접속하지 않고 키페어를 변경하여 키페어로 EC2에 접속할 수 있는 방법을 알아보자.
기존에 사용중인 키페어를 변경해 보자.
시작 시 할당된 키페어를 분실하였다.
EC2>키페어에서 새로운 키페어를 생성한다.
key-new 라는 키페어를 생성했다.
새로 생성된 키를 로컬에 다운로드 받은 후에 권한을 변경한다.
$ chmod 400 “key-new.pem”
ssh-keygen을 사용하여 공개 키를 확인하고 복사한다.
$ ssh-keygen -y -f key-new.pem
변경할 EC2의 설정에서 사용자 데이터 편집을 한다.
사용자 데이터 편집을 하려면 EC2가 중지 상태여야 한다.
사용자 데이터를 텍스트로 수정을 선택하고 아래 스크립트를 붙여준다.
name: username 을 EC2 접속할 사용자 이름으로 바꿔준다.
여기서는 amazon linux를 사용하여 ec2-user 사용자로 바꿔 주었다.
위에서 복사한 공개 키는 PublicKeypair 위치에 붙여준다.
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [users-groups, once]
users:
- name: username
ssh-authorized-keys:
- PublicKeypair
변경된 키페어는 콘솔에서는 반영되지 않는다.
ssh접속으로 새로운 key파일을 사용하여 ec2-user로 로그인 되었다.
사용자데이터에 공개 키를 바로 적용 시켜 놨기에 스크립트를 제거해 준다.
다시 인스턴스를 중지 시키고 사용자 데이터를 삭제한다.
사용자 데이터를 삭제해도 변경된 키페어로 접속이 된다!
EC2의 ~/.ssh/authorized_keys 파일에 저장된 공개 키를 확인해 보니 기존 키페어와 사용자데이터에 입력한 키페어가 추가되어 있다. 보안을 위하여 분실된 키페어는 삭제해 준다.
❗️인스턴스별 Default username
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html#connection-prereqs-get-info-about-instance
❗️키페어 변경 AWS 문서 참고
https://repost.aws/ko/knowledge-center/user-data-replace-key-pair-ec2