Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
처음 인스턴스를 시작한 후 SSH 키 페어를 분실한 경우 Amazon EC2 인스턴스에 연결하려면 어떻게 해야 합니까?
Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 연결하고 싶지만 SSH 키 페어를 분실했습니다.
간략한 설명
SSH 키 페어를 분실한 경우 EC2 인스턴스에 연결하려면 다음 방법 중 하나를 사용하십시오.
- 사용자 데이터를 입력하여 새 키 페어를 만듭니다.
- 관리형 노드인 인스턴스의 경우 AWS Systems Manager를 사용하여 키 페어를 복구합니다.
- Amazon Linux 2(AL2) 버전 2.0.20190618 이상 또는 Amazon Linux 2023(AL2023)을 실행하는 인스턴스의 경우 EC2 Instance Connect를 사용합니다.
- 인스턴스에 연결할 수 있고 EC2 직렬 콘솔에 액세스할 수 있는 경우 직렬 콘솔을 사용합니다.
참고: 이 방법은 인스턴스를 중지하고 시작할 필요가 없습니다. - 복구 인스턴스를 만들어 새 퍼블릭 키를 만듭니다.
중요: 인스턴스를 중지하고 시작하기 전에 다음 작업을 수행하십시오.
- Amazon Elastic Block Store(Amazon EBS) 볼륨의 백업을 만듭니다.
참고: 인스턴스가 인스턴스 저장소를 지원하거나 데이터가 포함된 인스턴스 저장소 볼륨을 보유하는 경우 인스턴스를 중지하면 Amazon EC2에서 해당 데이터를 삭제합니다. - 인스턴스를 중지해도 인스턴스가 종료되지 않도록 하려면 인스턴스 종료 동작을 중지로 설정합니다.
참고: 인스턴스를 중지하고 시작할 때 인스턴스의 퍼블릭 IP 주소가 변경됩니다. 퍼블릭 IP 주소 대신 탄력적 IP 주소를 사용하여 외부 트래픽을 인스턴스로 라우팅하는 것이 좋습니다.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
사용자 데이터 스크립트 입력
중요: 민감한 데이터를 사용자 데이터 스크립트에 저장하지 마십시오. 대신 AWS Secrets Manager와 같은 안전한 방법을 사용하십시오.
인스턴스에서 cloud-init에 액세스할 수 없거나 cloud-init 문제가 발생하는 경우 복구 인스턴스 사용을 진행하십시오.
새 키 페어 생성
다음 단계를 완료하십시오.
- 새 키 페어를 만듭니다.
- Amazon EC2 콘솔에서 프라이빗 키를 만드는 경우 키 페어의 퍼블릭 키를 검색합니다.
- Amazon EC2 콘솔을 엽니다.
- 인스턴스를 중지합니다.
- 작업을 선택하고 인스턴스 설정을 선택합니다.
- 사용자 데이터 편집을 선택하고 다음 스크립트를 입력합니다.
참고: username을 기본 사용자 이름 또는 이전에 만든 사용자 지정 사용자 이름으로 바꾸십시오. PublicKeypair를 퍼블릭 키로 바꾸십시오. 전체 퍼블릭 키를 입력할 때는 ssh-rsa로 시작하십시오.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 - 저장을 선택합니다.
- 인스턴스를 시작합니다.
cloud-init 단계가 완료되었는지 확인
인스턴스 콘솔 출력에서 다음 요소를 확인하여 cloud-init 단계가 완료되었는지 확인합니다.
- 오류 메시지가 없습니다.
- 모든 cloud-init 지시문이 실행됨으로 나열됩니다.
- cloud-init의 경우 다음 예와 비슷한 완료 메시지가 표시됩니다. "Finished [0;1;39mCloud-init: Final Stage[0m Cloud-init v. A.B.C finished at ..".
인스턴스의 사용자 데이터에서 명령 제거
다음 단계를 완료하십시오.
- 인스턴스를 중지합니다.
- 작업을 선택하고 인스턴스 설정을 선택합니다.
- 사용자 데이터 편집을 선택한 다음, 필드의 모든 내용을 지웁니다.
- 저장을 선택합니다.
- 인스턴스를 시작합니다.
Systems Manager 사용
Systems Manager에서 관리형 노드인 인스턴스를 복구하려면 AWSSupport-ResetAccess 런북을 사용하여 키 페어를 복구하십시오. AWSSupport-ResetAccess는 EC2Rescue를 사용하여 인스턴스에 새 SSH 키 페어를 자동으로 생성하고 추가합니다.
Systems Manager는 인스턴스의 새 SSH 프라이빗 키를 암호화하여 AWS Systems Manager의 기능인 Parameter Store에 /ec2rl/openssh/instance_id/key로 저장합니다.
Parameter Store에서 프라이빗 SSH 키를 가져오려면 get-parameters AWS CLI 명령을 실행합니다.
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 파일을 사용하여 연결할 수 없는 인스턴스에 다시 연결하십시오.
프라이빗 키를 .pem 파일로 변환하려면 다음 명령을 실행합니다.
ssh-keygen -f key-pair-name -e -m pem > key-pair-name.pem
참고: key-pair-name을 키 페어의 이름으로 바꾸십시오.
자동화 런북은 암호로 활성화된 백업 Amazon Machine Image(AMI)를 만듭니다. Amazon EC2에서는 새 AMI가 자동으로 삭제되지 않으므로 AWS 계정에 그대로 남아 있습니다.
AMI를 찾으려면 다음 단계를 완료하십시오.
- Amazon EC2 콘솔을 엽니다.
- AMI를 선택합니다.
- 검색 필드에 자동화 ID를 입력합니다.
EC2 Instance Connect 사용
Amazon Linux 인스턴스에 연결하려면 EC2 Instance Connect를 사용하여 Linux 인스턴스에 연결을 참조하십시오.
EC2 직렬 콘솔 사용
Linux용 EC2 직렬 콘솔에 액세스할 수 있는 경우 해당 콘솔을 사용하여 지원되는 Nitro 기반 인스턴스 유형의 문제를 해결합니다. 자세한 내용은 EC2 직렬 콘솔 액세스 구성을 참조하십시오.
복구 인스턴스 사용
다음 단계를 완료하십시오.
-
루트 볼륨 디바이스 이름을 가져오려면 다음 명령을 실행합니다.
sudo lsblk -f출력 예시:
NAME FSTYPE LABEL UUID MOUNTPOINT xvda └─xvda1 xfs 1234abcd-56ef-78gh-90ij-1234klmnopqr / xvdf └─xvdf1 xfs abcd1234-ef56-gh78-ij90-qr1234klmnop -
연결된 볼륨을 복구 인스턴스에 마운트하려면 다음 명령을 실행합니다.
sudo mkdir /mnt/target sudo mount /dev/xvdf1 /mnt/target참고: /dev/xvdf1을 원본 인스턴스의 루트 볼륨 디바이스 이름으로 바꾸십시오.
-
새 퍼블릭 키를 만들려면 다음 명령을 실행합니다.
sudo mkdir -p /mnt/target/home/USER/.ssh echo "your_new_public_key" | sudo tee -a /mnt/target/home/USER/.ssh/authorized_keys참고: USER를 원래 인스턴스의 사용자 이름으로, your_new_public_key를 퍼블릭 키로 바꾸십시오. 퍼블릭 키 이름은 ssh-rsa로 시작합니다.
-
인스턴스의 키에 대한 액세스를 구성하려면 다음 명령을 실행합니다.
OS_USER=os-user sudo chown -R $OS_USER:$OS_USER /mnt/target/home/$OS_USER/.ssh sudo chmod 700 /mnt/target/home/$OS_USER/.ssh sudo chmod 600 /mnt/target/home/$OS_USER/.ssh/authorized_keys참고: os-user를 인스턴스 시작에 사용한 AMI와 연결된 사용자 이름으로 바꾸십시오.
-
볼륨을 마운트 해제하려면 다음 명령을 실행합니다.
sudo umount /mnt/target
관련 콘텐츠
- 질문됨 2년 전
