본 기사는 AWS Nitro 시스템 기반이 아닌 T2, C4와 같은 타입의 EC2 Windows 인스턴스에서 문제 해결을 위해 안전 모드로 부팅하고 액세스 하는 방법에 대해 설명 합니다.
상황에 따라 EC2 인스턴스에서 실행되는 Windows OS 관련 문제를 해결하기 위해 Windows를 안전모드로 부팅하고 액세스 하는 것이 필요할 수 있습니다. 그러나 일반적으로 원격 데스크톱 서비스(Remote Desktop Services)는 안전 모드에서 실행되지 않기 때문에 안전모드로 부팅하면 인스턴스에 전혀 액세스할 수 없게 됩니다.
만약 해당 EC2 인스턴스가 Nitro 시스템 기반이라면 EC2 Serial Console을 통한 SAC(Special Admin Console)를 사용하여 안전모드로 부팅하고 액세스 할 수 있습니다. [1]
하지만 해당 인스턴스가 Nitro 시스템에 기반한 인스턴스 유형이 아니라면 이러한 방법을 사용할 수 없습니다.
본 기사에서는 Nitro 시스템 기반이 아닌 T2, C4와 같은 타입의 EC2 Windows 인스턴스에서 Systems Manager의 Session Manager 기능을 통해 "안전 모드 (네트워킹 사용)"로 부팅된 인스턴스의 Windows OS에 액세스하고 Powershell 명령을 통해 필요한 작업을 수행하는 방법을 설명합니다.
계속 진행하기 전에, 안전 모드는 타사 응용 프로그램 및 소프트웨어를 비활성화하여 Windows OS 실행에 필요한 최소한의 환경을 구성하는 방법으로 만들어졌다는 점에 유의하세요. 본 기사에서 안내하는 절차에는 Amazon SSM 에이전트를 안전 모드에서 시작할 수 있는 서비스 목록에 추가하는 작업이 포함되며, 이는 문제 해결 목적으로만 수행하실 것을 권장합니다.
- "안전 모드 (네트워킹 사용)"으로 부팅하여 액세스가 필요한 Nitro 시스템 기반이 아닌 EC2 Windows 인스턴스에 Systems Manager의 Session Manager 기능을 사용할 수 있도록 필요한 설정을 진행합니다. 이를 위한 자세한 방법은 참고절 [2]을 확인합니다.
- 해당 인스턴스에 RDP로 연결합니다.
- 레지스트리 편집기(regedit)를 실행합니다.
- HKLM\System\ControlSet001\Control\SafeBoot\Network 으로 이동합니다.
- 'AmazonSSMAgent' 이름의 키를 하위에 생성합니다.
- 'AmazonSSMAgent' 키에 생성된 (Default) 값의 데이터를 "Service"로 설정합니다.
![여기에 이미지 설명 입력](/media/postImages/original/IMJPh4ErgaTHGluq50rb0LDQ)
- 다음 부팅에서 Windows가 "안전모드 (네크워킹 사용)"으로 부팅되도록 설정합니다. 관리자 권한으로 Command Prompt를 실행합니다.
- 다음 명령을 입력하고 실행합니다.
bcdedit /set safeboot network
- 해당 인스턴스를 재부팅 합니다.
해당 인스턴스는 재부팅 이후 "안전모드 (네크워킹 사용)"로 부팅되고, 이와 함께 상태 체크는 정상적으로 통과되나 RDP로 연결할 수 없게 됩니다.
하지만 Systems Manager의 Session Manager 기능을 사용하여 해당 인스턴스에 액세스 할 수 있습니다.
AWS Systems Manager 콘솔에서 Session Manager로 이동하여 "세션 시작(Start session)" 을 통해 해당 인스턴스에 연결을 시도합니다. 이때 연결이 되고 Powershell 액세스를 얻기까지 5분 정도의 시간이 소요될 수 있습니다.
![여기에 이미지 설명 입력](/media/postImages/original/IMVJTBqJw2RzKi5KCV1n3s1Q)
이렇게 Session Manager를 통해 "안전 모드 (네트워킹 사용)" 으로 부팅된 EC2 Windows 인스턴스에 연결하고 필요한 문제 해결 조치를 수행해 볼 수 있습니다.
그리고 필요한 조치 수행을 완료하였다면, 안전 모드로 부팅되도록 설정한 부트 옵션을 제거합니다.
- 관리자 권한으로 Command Prompt를 실행합니다.
- 다음 명령을 입력하고 실행합니다.
bcdedit /deletevalue safeboot
- 해당 인스턴스를 재부팅 합니다.
참고 :
[1] Use SAC to troubleshoot your Windows instance
https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/troubleshooting-sac.html
[2] Setting up Session Manager
https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html