최초 시작 후 SSH 키 페어를 분실했다면 Amazon EC2 인스턴스에 어떻게 연결해야 하나요?

4분 분량
0

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 연결하고 싶지만 SSH 키 페어를 분실했습니다.

해결 방법

중요:

방법 1, 2 및 3은 인스턴스를 중지한 다음 시작해야 합니다. 다음 사항에 유의하세요.

  • 인스턴스가 인스턴스 스토어 기반 인스턴스이거나 데이터가 포함된 인스턴스 스토어 볼륨이 있는 경우, 인스턴스를 중지하면 데이터가 손실됩니다. 자세한 내용을 보려면 인스턴스의 루트 디바이스 유형 결정을 참조하세요. 인스턴스 스토어 볼륨에 보관하려는 모든 데이터를 백업해야 합니다.
  • 인스턴스를 중지하고 다시 시작하면 인스턴스의 퍼블릭 IP 주소가 변경됩니다. 외부 트래픽을 인스턴스로 라우팅할 때는 퍼블릭 IP 주소 대신 탄력적 IP 주소를 사용하는 것이 좋습니다.

방법 1: 사용자 데이터 입력

1.    새 키 페어를 생성합니다.

2.    Amazon EC2 콘솔에서 프라이빗 키를 생성하는 경우, 키 페어에 대한 퍼블릭 키를 검색합니다.

3.    Amazon EC2 콘솔을 엽니다.

4.    인스턴스를 중지합니다.

5.    작업, 인스턴스 설정, 사용자 데이터 편집을 선택합니다.

6.    사용자 데이터 편집 대화 상자에 다음 스크립트를 복사합니다.

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

usernameec2-user와 같은 사용자 이름으로 바꿉니다. 기본 사용자 이름을 입력하거나, 이전에 인스턴스에 대해 설정된 경우 사용자 지정 사용자 이름을 입력할 수 있습니다. 기본 사용자 이름 목록은 인스턴스에 대한 정보 가져오기를 참조하세요.

PublicKeypair를 2단계에서 검색한 퍼블릭 키로 교체합니다. ssh-rsa로 시작하여 전체 퍼블릭 키를 입력해야 합니다.

7.    저장을 선택합니다.

8.    인스턴스를 시작합니다.

9.    cloud-init 단계가 완료된 후 퍼블릭 키가 교체되었는지 확인합니다.

중요: 스크립트에 키 페어가 포함되어 있으므로 사용자 데이터 필드에서 스크립트를 제거하세요.

10.    인스턴스를 중지합니다.

11.    작업, 인스턴스 설정, 사용자 데이터 편집을 선택합니다.

12.    사용자 데이터 편집 대화 상자에서 모든 텍스트를 삭제한 다음 저장을 선택합니다.

13.    인스턴스를 시작합니다.

방법 2: AWS Systems Manager 사용

인스턴스가 AWS Systems Manager의 관리형 인스턴스인 경우, AWSSupport-ResetAccess 문서를 사용하여 손실된 키 페어를 복구하세요. AWSSupportResetAccess는 지정된 EC2 인스턴스에서 EC2 Rescue for Linux 도구를 사용하여 새로운 SSH(퍼블릭/프라이빗) 키 페어를 자동으로 생성하고 추가합니다.

인스턴스의 새 SSH 프라이빗 키는 암호화되어 AWS Systems Manager의 기능인 Parameter Store에 저장됩니다. 파라미터 이름은 /ec2rl/opensh/instance\ _id/key입니다.

Parameter Store에서 프라이빗 SSH 키를 검색하려면 다음 명령을 사용합니다.

$ aws ssm get-parameters --names "/ec2rl/openssh/instance_id/key" --with-decryption --output json --query  "Parameters[0].Value" | sed 's:\\n:\n:g; s:^"::; s:"$::' >  key-pair-name

참고: instance_id를 인스턴스 ID로 바꾸고, key-pair-name을 키 페어 이름으로 바꾸세요.

그런 다음 이 파라미터의 값을 콘텐츠로 사용하여 새 .pem 파일을 생성하고 이를 사용하여 연결할 수 없는 인스턴스에 다시 연결합니다. 다음 명령을 사용하여 프라이빗 키를 .pem 파일로 변환합니다.

$ ssh-keygen -f key-pair-name -e -m pem > key-pair-name.pem

참고: key-pair-name을 키 페어의 이름으로 바꾸세요.

자동화 워크플로는 암호가 활성화된 백업 Amazon Machine Image(AMI)를 생성합니다. 새 AMI는 자동으로 삭제되지 않고 계정에 남아 있습니다.

이러한 AMI를 찾으려면 다음과 같이 수행합니다.

1.    Amazon EC2 콘솔을 연 다음, AMI를 선택합니다.

2.    검색 필드에 자동화 실행 ID를 입력합니다.

방법 3: Amazon EC2 Instance Connect 사용

인스턴스가 Amazon Linux 2023을 포함하여 Amazon Linux 2 2.0.20190618 이상인 경우, EC2 Instance Connect를 사용하여 인스턴스에 연결할 수 있습니다.

방법 4: EC2 직렬 콘솔 사용

Linux용 EC2 직렬 콘솔 설정을 켠 경우, 이를 사용하여 지원되는 Nitro 기반 인스턴스 유형의 문제를 해결할 수 있습니다. 직렬 콘솔은 부팅 문제, 네트워크 구성 및 SSH 구성 문제를 해결하는 데 도움이 됩니다. 직렬 콘솔은 작동하는 네트워크 연결 없이 인스턴스에 연결됩니다. 사용자는 Amazon EC2 콘솔이나 AWS Command Line Interface(AWS CLI)를 사용하여 직렬 콘솔에 액세스할 수 있습니다.

직렬 콘솔을 사용하기 전에 계정 수준에서 직렬 콘솔에 액세스 권한을 부여해야 합니다. 그런 다음 IAM 사용자에게 액세스 권한을 부여하는 AWS Identity and Access Management(IAM) 정책을 생성합니다. 또한 직렬 콘솔을 사용하는 모든 인스턴스에는 적어도 한 명의 암호 기반 사용자가 포함되어야 합니다. 인스턴스에 연결할 수 없고 직렬 콘솔 액세스를 구성하지 않은 경우, 방법 1, 방법 2 또는 방법 3의 지침을 따르세요. Linux용 EC2 직렬 콘솔 구성에 대한 자세한 내용은 EC2 직렬 콘솔 액세스 구성을 참고하세요.

참고: AWS CLI 명령을 실행할 때 오류가 발생하면 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

관련 정보

시작 시 Linux 인스턴스에서 명령 실행

AWS Systems Manager Automation

AWS 공식
AWS 공식업데이트됨 2년 전