EC2 인스턴스에서 암호 및 SSH 키 재설정 - AWS Systems Manager

EC2 인스턴스에서 암호 및 SSH 키 재설정

AWSSupport-ResetAccess 런북을 사용하여 Windows Server용 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 로컬 관리자 암호 생성을 자동으로 재활성화하고 Linux용 EC2 인스턴스에 새로운 SSH 키를 생성할 수 있습니다. AWSSupport-ResetAccess 실행서는 로컬 관리자 암호를 재설정하는 데 일반적으로 필요한 단계를 자동화하는 AWS Systems Manager 작업, AWS CloudFormation 작업 및 AWS Lambda 함수를 조합하여 수행하도록 설계되었습니다.

AWSSupport-ResetAccess 실행서와 함께 AWS Systems Manager의 기능인 Automation을 사용하여 다음 문제를 해결할 수 있습니다.

Windows

EC2 키 페어 분실: 이 문제를 해결하려면 AWSSupport-ResetAccess 실행서를 사용하여 현재 인스턴스에서 암호 지원 AMI를 생성한 후 이 AMI에서 인스턴스를 새로 시작하고 키 페어를 선택합니다.

로컬 관리자 암호 분실: 이 문제를 해결하려면 AWSSupport-ResetAccess 실행서를 사용하여, 현재 EC2 키 페어로 복호화할 수 있는 새로운 암호를 생성합니다.

Linux

EC2 키 페어를 분실한 경우 또는 분실한 키를 사용하여 인스턴스에 대한 SSH 액세스를 구성한 경우: 이 문제를 해결하려면 AWSSupport-ResetAccess 실행서를 사용하여 현재 인스턴스에 대한 SSH 키를 새로 생성합니다. 이렇게 하면 인스턴스에 다시 연결할 수 있습니다.

참고

Windows Server용 EC2 인스턴스가 Systems Manager용으로 구성된 경우 EC2Rescue 및 AWS Systems Manager Run Command를 사용하여 로컬 관리자 암호를 재설정할 수도 있습니다. 자세한 내용은 Amazon EC2 사용 설명서Systems Manager Run Command를 통해 Windows Server용 EC2Rescue 사용를 참조하세요.

관련 정보

Amazon EC2 사용 설명서PuTTY를 사용하여 Windows에서 Linux 인스턴스에 연결

작동 방식

Automation과 AWSSupport-ResetAccess 실행서를 사용한 인스턴스 문제 해결은 다음과 같이 수행됩니다.

  • 인스턴스의 ID를 지정하고 실행서를 실행합니다.

  • 시스템에서 임시 VPC를 만든 다음, 일련의 Lambda 함수를 실행하여 VPC를 구성합니다.

  • 시스템에서 원본 인스턴스와 동일한 가용 영역에 있는 임시 VPC의 서브넷을 식별합니다.

  • 시스템에서 SSM이 활성화된 임시 헬퍼 인스턴스를 시작합니다.

  • 시스템에서 원본 인스턴스를 중지한 후 백업을 만듭니다. 그런 다음 헬퍼 인스턴스에 원본 루트 볼륨을 연결합니다.

  • 시스템에서 Run Command를 사용하여 헬퍼 인스턴스에서 EC2Rescue를 실행합니다. Windows에서 EC2Rescue는 연결된, 원래 루트 볼륨에 있는 EC2Config 또는 EC2Launch를 사용하여 로컬 관리자에 대한 암호 생성을 활성화합니다. Linux에서, EC2Rescue는 새로운 SSH 키를 생성하여 투입하고, 암호화된 프라이빗 키를 Parameter Store에 저장합니다. 마치면 EC2Rescue가 원본 인스턴스에 루트 볼륨을 다시 연결합니다.

  • 암호 생성이 활성화되어 있으므로 시스템에서 인스턴스의 새 Amazon Machine Image(AMI)를 생성합니다. 이 AMI를 사용하여 새 EC2 인스턴스를 생성하고 필요 시 새 키 페어를 연결할 수 있습니다.

  • 시스템에서 원본 인스턴스를 다시 시작하고, 임시 인스턴스를 종료합니다. 또한 자동화가 시작될 때 생성된 Lambda 함수와 임시 VPC를 종료합니다.

  • Windows: 해당 인스턴스가 인스턴스에 지정된 현재 키 페어를 사용하여 Amazon EC2 콘솔로부터 디코딩할 수 있는 새로운 암호를 생성합니다.

    Linux: Systems Manager 파라미터 스토어에 /ec2rl/openssh/instance ID/key로 저장된 SSH 키를 사용하여 인스턴스에 SSH로 액세스할 수 있습니다.

시작하기 전 준비 사항

다음 자동화를 실행하기 전에 다음을 수행합니다.

  • 관리자 암호를 재설정하려는 인스턴스의 인스턴스 ID를 복사합니다. 절차에서 이 ID를 지정할 것입니다.

  • 원할 경우, 연결할 수 없는 인스턴스와 동일한 가용 영역에 있는 서브넷 ID를 수집할 수도 있습니다. 이 서브넷에 EC2Rescue 인스턴스가 생성됩니다. 서브넷을 지정하지 않으면 Automation 프로세스에 따라 AWS 계정에 새로운 임시 VPC가 생성됩니다. AWS 계정에 사용 가능한 VPC가 하나 이상 있는지 확인합니다. 기본적으로 리전 하나에 VPC를 다섯 개 만들 수 있습니다. 리전에 이미 VPC를 다섯 개 만든 경우, 자동화가 인스턴스를 변경하지 않고 실패합니다. Amazon VPC 할당량에 대한 자세한 내용은 Amazon VPC 사용 설명서VPC 및 서브넷을 참조하세요.

  • 필요에 따라 Automation의 AWS Identity and Access Management(IAM) 역할을 생성하고 지정할 수 있습니다. 이 역할을 지정하지 않으면 자동화가 자동화를 실행한 사용자의 맥락에서 실행됩니다.

AWSSupport-EC2Rescue에 인스턴스에서 작업을 수행할 권한 부여

EC2Rescue는 자동화 중에 인스턴스에서 일련의 작업을 수행할 권한이 필요합니다. 이러한 작업은 AWS Lambda, IAM 및 Amazon EC2 서비스를 호출하여 인스턴스 관련 문제를 안전하게 해결하려고 시도합니다. AWS 계정 및/또는 VPC에서 관리자 수준 권한이 있는 경우 이 섹션의 설명과 같이 권한을 구성하지 않고 자동화를 실행할 수 있습니다. 관리자 수준 권한이 없는 경우, 사용자 또는 관리자가 다음 옵션 중 하나를 사용하여 권한을 구성해야 합니다.

IAM 정책을 사용하여 권한 부여

사용자, 그룹 또는 역할에 다음 IAM 정책을 인라인 정책으로 연결하거나, 새 IAM 관리형 정책을 생성하고 이를 사용자, 그룹 또는 역할에 연결할 수 있습니다. 사용자, 그룹 또는 역할에 인라인 정책 추가에 대한 자세한 내용은 인라인 정책 작업을 참조하세요. 새 관리형 정책 만들기에 대한 자세한 내용은 관리형 정책 작업을 참조하십시오.

참고

새 IAM 관리형 정책을 생성하는 경우 인스턴스가 Systems Manager API와 통신할 수 있도록 AmazonSSMAutomationRole 관리형 정책도 여기에 연결해야 합니다.

AWSSupport-ResetAccess에 대한 IAM 정책

계정 ID를 자신의 정보로 바꿉니다.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction", "lambda:DeleteFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:*:account ID:function:AWSSupport-EC2Rescue-*", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::awssupport-ssm.*/*.template", "arn:aws:s3:::awssupport-ssm.*/*.zip" ], "Effect": "Allow" }, { "Action": [ "iam:CreateRole", "iam:CreateInstanceProfile", "iam:GetRole", "iam:GetInstanceProfile", "iam:PutRolePolicy", "iam:DetachRolePolicy", "iam:AttachRolePolicy", "iam:PassRole", "iam:AddRoleToInstanceProfile", "iam:RemoveRoleFromInstanceProfile", "iam:DeleteRole", "iam:DeleteRolePolicy", "iam:DeleteInstanceProfile" ], "Resource": [ "arn:aws:iam::account ID:role/AWSSupport-EC2Rescue-*", "arn:aws:iam::account ID:instance-profile/AWSSupport-EC2Rescue-*" ], "Effect": "Allow" }, { "Action": [ "lambda:CreateFunction", "ec2:CreateVpc", "ec2:ModifyVpcAttribute", "ec2:DeleteVpc", "ec2:CreateInternetGateway", "ec2:AttachInternetGateway", "ec2:DetachInternetGateway", "ec2:DeleteInternetGateway", "ec2:CreateSubnet", "ec2:DeleteSubnet", "ec2:CreateRoute", "ec2:DeleteRoute", "ec2:CreateRouteTable", "ec2:AssociateRouteTable", "ec2:DisassociateRouteTable", "ec2:DeleteRouteTable", "ec2:CreateVpcEndpoint", "ec2:DeleteVpcEndpoints", "ec2:ModifyVpcEndpoint", "ec2:Describe*" ], "Resource": "*", "Effect": "Allow" } ] }

AWS CloudFormation 템플릿을 사용하여 권한 부여

AWS CloudFormation은 미리 구성된 템플릿을 사용하여 IAM 역할과 정책을 만드는 과정을 자동화합니다. 다음 절차에 따라 AWS CloudFormation을 사용하여 EC2Rescue Automation에 필요한 IAM 역할과 정책을 생성합니다.

EC2Rescue에 필요한 IAM 역할과 정책을 생성하려면
  1. AWSSupport-EC2RescueRole.zip을 다운로드하여 로컬 시스템의 디렉터리에 AWSSupport-EC2RescueRole.json 파일의 압축을 풉니다.

  2. AWS 계정가 특수 파티션인 경우 템플릿을 편집하여 ARN 값을 파티션 값으로 변경합니다.

    예를 들어 중국 리전의 경우 arn:aws의 모든 사례를 arn:aws-cn으로 변경합니다.

  3. AWS Management Console에 로그인하여 https://console.aws.amazon.com/cloudformation에서 AWS CloudFormation 콘솔을 엽니다.

  4. 스택 생성(Create stack), 새 리소스 사용(표준)(With new resources (standard))를 선택합니다.

  5. 스택 생성 페이지에서 Prerequisite - Prepare template(사전 조건 - 템플릿 준비)에 대해 Template is ready(템플릿 준비됨)를 선택합니다.

  6. 템플릿 지정에서 템플릿 파일 업로드를 선택합니다.

  7. 파일 선택을 선택한 다음 압축을 푼 디렉터리에서 AWSSupport-EC2RescueRole.json 파일을 찾아 선택합니다.

  8. Next(다음)를 선택합니다.

  9. Specify stack details(스택 세부 정보 지정) 페이지의 스택 이름 필드에 이 스택을 식별할 이름을 입력하고 다음을 선택합니다.

  10. (선택 사항) 태그 영역에서 하나 이상의 태그 키 이름/값 쌍을 스택에 적용합니다.

    태그는 리소스에 할당하는 선택적 메타데이터입니다. 태그를 사용하면 용도, 소유자 또는 환경을 기준으로 하는 등 리소스를 다양한 방식으로 분류할 수 있습니다. 예를 들어, 스택에 태그를 지정하여 실행되는 작업 유형, 대상 유형이나 기타 관련 리소스, 해당 스택이 실행되는 환경을 식별할 수 있습니다.

  11. 다음(Next)을 선택합니다.

  12. 검토 페이지에서 스택 세부 정보를 검토하고 아래로 스크롤하여 AWS CloudFormation에서 IAM 리소스를 생성할 수 있음을 승인합니다 옵션을 선택합니다.

  13. AWS CloudFormation에 몇 분간 CREATE_IN_PROGRESS 상태가 표시됩니다. 스택이 생성된 후 상태가 CREATE_COMPLETE로 바뀝니다. 새로 고침 아이콘을 선택하여 생성 프로세스의 상태를 확인할 수도 있습니다.

  14. 스택 목록에서 방금 생성한 스택 옆에 있는 옵션을 선택한 다음, 출력 탭을 선택합니다.

  15. 을 복사합니다. 이는 AssumeRole의 ARN입니다. 자동화를 실행할 때 이 ARN을 지정합니다.

자동화 실행

다음 절차에서는 AWS Systems Manager 콘솔을 사용하여 AWSSupport-ResetAccess 실행서를 실행하는 방법을 설명합니다.

중요

다음 자동화는 인스턴스를 중지합니다. 인스턴스가 중지되면 연결된 인스턴스 스토어 볼륨(있는 경우)의 데이터가 손실될 수 있습니다. 또한 인스턴스가 중지되면 연결된 탄력적 IP가 없는 경우 퍼블릭 IP가 변경될 수도 있습니다. 이렇게 구성이 변경되지 않도록 하려면 Run Command를 사용하여 액세스를 재설정하십시오. 자세한 내용은 Amazon EC2 사용 설명서Systems Manager Run Command를 통해 Windows Server용 EC2Rescue 사용를 참조하세요.

AWSSupport-ResetAccess 자동화를 실행하는 방법
  1. AWS Systems Manager 콘솔(https://console.aws.amazon.com/systems-manager/)을 엽니다.

  2. 왼쪽 탐색 창에서 Automation을 선택합니다.

  3. 자동화 실행(Execute automation)을 선택합니다.

  4. 자동화 문서 섹션의 목록에서 Owned by Amazon(Amazon 소유)을 선택합니다.

  5. 실행서 목록에서 [AWSSupport-ResetAccess]의 카드에 있는 버튼을 선택하고 [다음(Next)]을 선택합니다.

  6. Execute automation document(자동화 문서 실행) 페이지에서 Simple execution(단순 실행)을 선택합니다.

  7. 문서 세부 정보 섹션에서 문서 버전이 가장 높은 기본 버전으로 설정되어 있는지 확인합니다. 예를 들어, $DEFAULT 또는 3(기본값)입니다.

  8. 입력 파라미터 섹션에서 다음 파라미터를 지정합니다.

    1. InstanceID에서 연결할 수 없는 인스턴스의 ID를 지정합니다.

    2. SubnetId에서, 지정한 인스턴스와 동일한 가용 영역에 있는 기존 VPC의 서브넷을 지정합니다. 기본적으로 Systems Manager는 새로운 VPC를 생성하지만, 원하는 사용자는 기존 VPC의 서브넷을 지정할 수 있습니다.

      참고

      서브넷 ID를 지정하는 옵션이 표시되지 않는 경우 실행서의 최신 [기본(Default)] 버전을 사용하고 있는지 확인합니다.

    3. EC2RescueInstanceType에서 EC2Rescue 인스턴스의 인스턴스 유형을 지정합니다. 기본 인스턴스 유형은 t2.medium입니다.

    4. [AssumeRole]의 경우 이 주제의 앞부분에서 설명한 AWS CloudFormation 절차를 사용하여 이 Automation에 대한 역할을 생성한 경우 AWS CloudFormation 콘솔에서 기록한 AssumeRole ARN을 지정합니다.

  9. (옵션) [태그(Tags)] 영역에서 하나 이상의 태그 키 이름/값 페어(예: Key=Purpose,Value=ResetAccess)를 적용하여 자동화를 식별할 수 있습니다.

  10. 실행을 선택합니다.

  11. 자동화 진행 상황을 모니터링하려면 실행 중인 자동화를 선택한 후 [단계(Steps)] 탭을 선택합니다. 자동화가 종료되면 [설명(Descriptions)] 탭을 선택한 후 [출력 보기(View output)]를 선택하여 결과를 봅니다. 개별 단계의 출력을 보려면 단계 탭을 선택한 다음, 단계 옆에 있는 출력 보기를 선택합니다.

실행서가 자동화의 일부로 백업 AMI와 암호 사용 AMI를 생성합니다. 자동화에 의해 생성된 다른 모든 리소스는 자동으로 삭제되지만, 이러한 AMIs는 계정에 계속 유지됩니다. AMIs는 다음 명명 규칙을 사용하여 이름이 지정됩니다.

  • 백업 AMI: AWSSupport-EC2Rescue:InstanceID

  • 암호가 설정된 AMI: AWSSupport-EC2Rescue: 인스턴스스 ID의 암호가 설정된 AMI

Automation 실행 ID를 검색하여 이 AMIs를 찾을 수 있습니다.

Linux의 경우 인스턴스의 새로운 SSH 프라이빗 키는 암호화되어 Parameter Store에 저장됩니다. 파라미터 이름은 /ec2rl/openssh/instance ID/key입니다.