Amazon Linux 2에 대해 들어보셨을 것입니다. Amazon이 개발한 AWS 운영체제로, 무료로 제공되며 테스트용 가상 머신 어플라이언스까지 다운로드할 수 있습니다. 저도 이전에 이 운영체제를 소개하면서 직접 테스트해 보았습니다.
테스트 과정에서 마주친 걸림돌은 바로 로그인이었습니다. 일반적으로 EC2 인스턴스에는 SSH로 접속하지만, 사실상 오프라인 상태인 가상 머신에는 무엇을 사용해야 할까요? 온라인에서 root/ec2-user 계정 조합을 찾을 수 없었고, 싱글 모드에서 비밀번호를 변경하는 익숙한 방법도 통하지 않았습니다. 그래서 이 가이드를 준비했습니다. Amazon Linux 2 가상 머신의 로그인 자격 증명을 수동으로 변경하는 방법을 단계별로 알려드리겠습니다.
로그인 프롬프트
이미지를 다운로드하고 부팅합니다. 로그인 화면이 나타납니다. 그런 다음 어떻게 해야 할까요?

싱글 모드(Single Mode)는 더 이상 답이 아니다
리눅스를 오래 사용해 온 분들이라면 이 방법을 기억하실 겁니다. 시스템을 강제로 싱글 모드로 진입시키고, 루트 파일시스템을 쓰기 가능하게 다시 마운트한 뒤 비밀번호를 변경하고 재부팅하는 것이죠. 누구나 여러 번 해봤던 검증된 방법입니다. 하지만 안타깝게도 이제는 작동하지 않습니다.
부팅 메뉴의 옵션에 init=/bin/bash를 추가해 보았지만 커널 패닉이 발생했습니다. 커널 자체의 문제인지, Amazon Linux가 systemd를 채택한 탓인지, 아니면 다른 이유인지 확실하지 않지만 오래된 방법은 소용이 없었습니다.
온라인을 검색해 보면 별다른 정보를 주지 않는 수많은 bin-bash 관련 글 외에도, RHEL 7에서 비밀번호를 변경하는 방법을 자세히 설명한 글을 찾을 수 있습니다. 해당 글은 RHEL 6에서 RHEL 7로 넘어오면서 달라진 변화와, 이것이 RHCSA 시험 범위에 포함된다는 점도 언급합니다. 갑자기 왠 철학일까요? 간편함은 어디로 간 걸까요?
어쨌든, 이 글에서는 rd.break를 커널 라인에 추가하면 도움이 된다고 합니다. Amazon Linux 2는 RHEL 기반이므로 한번 시도해 봤지만, 아무런 효과가 없었습니다. Amazon Linux는 태연하게 정상 부팅되었고, 역시 원하는 결과를 얻지 못했습니다.

Amazon에는 이 작업 방법을 설명하는 아주 짧고 모호한 문서만 존재합니다. cloud-init 설정 ISO를 만들라고 안내한 뒤, 가상화 플랫폼 문서를 참조하라고 넘겨버릴 뿐입니다. 솔직히 큰 도움이 되지 않습니다.
VDI 수동 마운트
이전에 다룬 적 있는 방법입니다. 가상 머신 디스크와 파티션을 루프백 장치로 마운트해 파일시스템 내용을 편집하는 방법을 소개했고, partx를 사용해 KVM 머신을 복제하기도 했습니다. 여기서도 같은 작업을 수행하며, 가상 머신 이미지 파일시스템을 마운트하는 또 다른 방법을 추가로 소개하겠습니다.
이번에는 qemu-nbd 도구가 필요합니다. 이 유틸리티는 대부분의 배포판에서 qemu-kvm 패키지에 포함되어 있으므로 먼저 설치합니다. 실행에 실패하면 nbd(네트워크 블록 장치) 모듈을 메모리에 직접 로드해야 할 수 있습니다. 명령 순서는 다음과 같습니다(sudo 또는 root 권한 필요):
<패키지 매니저> install qemu-kvm
modprobe nbd
qemu-nbd -c /dev/nbd0 <가상 머신 vdi 하드디스크 이름>
다운로드한 Amazon Linux 2 vdi 이미지 경로를 위 명령어에 입력하세요. 반드시 /dev/nbd0를 사용할 필요는 없으며 어떤 번호든 지정할 수 있지만, 순차적으로 사용하는 것이 깔끔하고 편리합니다.
블록 장치가 매핑되면 /dev/nbd0p* 형태로 파티션을 확인할 수 있습니다. 번호는 실제 하드디스크의 파티션 구성과 일치합니다(예: p1, p2 등). partx로 수행했던 작업과 거의 동일합니다. 다음 단계는 원하는 파티션을 적절한 위치에 마운트하는 것입니다:
mount /dev/nbd0pX /mountpoint
이 명령을 실행하면 Amazon Linux 2 vdi 파일시스템(파티션)의 내용이 지정한 마운트 포인트(예: /mnt) 아래에 노출되며, 이제 자유롭게 조작할 수 있습니다.
/etc/shadow 파일 편집
이제 비밀번호를 변경할 차례입니다. 방법은 다음과 같습니다. 실제로 가상 머신을 구동 중인 호스트 리눅스에서 새 사용자를 생성합니다. 이름은 자유롭게 지정하면 되는데, 여기서는 amazon이라고 하겠습니다. 비밀번호를 설정한 뒤 /etc/shadow 파일을 열어보면, 비밀번호가 암호화되어 두 개의 콜론 구분자 사이에 긴 해시 형태로 저장되어 있는 것을 확인할 수 있습니다. 바로 이 값이 필요한 것입니다. 예를 들면 다음과 같습니다:
amazon:$123456$dedoimedo:11111:0:99999:6:::
이제 앞서 마운트한 Amazon Linux 2 파일시스템 위치(예: /mnt)로 이동하여 shadow 파일을 텍스트 편집기로 엽니다:
<텍스트 편집기> /mnt/etc/shadow
기본 사용자가 실제로 ec2-user라는 것을 확인할 수 있습니다. 미리 몰랐더라도 이제 알게 되셨죠. 이 사용자에게도 비밀번호 해시가 저장되어 있는데, 그것이 무엇인지 알 필요는 없습니다. 해시를 로컬에서 만든 amazon 사용자의 해시로 교체하고, 파일을 저장한 뒤 vdi를 언마운트하면 됩니다.

재부팅, 로그인, 작업 시작
가상 머신을 다시 시작합니다. 로그인 프롬프트가 나타나면 올바른 사용자 이름과 방금 설정한 비밀번호로 로그인합니다. 이제 성공적으로 로그인했으며 가상 머신 어플라이언스를 본격적으로 사용할 수 있습니다. 여기서는 Amazon Linux로 시연했지만, 이 방법은 모든 리눅스 배포판과 파일시스템에 적용 가능한 범용 기술입니다. 정상적인 시스템 유지보수를 진행할 수 없는 상황이라면 이 요령을 활용해 제약을 우회하고 파일시스템에 필요한 변경을 가할 수 있습니다. 가상 머신 환경에서 특히 유용하며, KVM에서도 해봤고 이번에는 VirtualBox에서도 성공했습니다.

결론
Amazon Linux 2를 테스트하고 싶은데 로그인 자격 증명 때문에 막혔다면, 직접 ISO 이미지를 만들거나 EC2 사용법 전체를 익힐 필요 없이 partx나 qemu-nbd로 가상 하드디스크를 마운트하고 shadow 파일을 수동으로 편집하면 됩니다. 싱글 모드나 구조 모드 부팅이 되지 않을 때 확실하게 통하는 우회 방법입니다.
Amazon Linux 2는 흥미로운 기능들을 갖춘 매력적인 운영체제입니다. 초기 로그인/비밀번호 같은 기술적·행정적 번거로움 때문에 놓치기에는 아깝습니다. 다른 배포판들처럼 기본 계정 세트가 제공되면 좋을 텐데 말이죠. 게다가 init=/bin/bash와 관련된 리눅스 인프라의 일반적인 변화도 상황을 더 어렵게 만듭니다. 이 글이 여러분의 여정을 시작하는 데 필요한 기술적 노하우와 모험심을 불어넣어주기를 바랍니다. 무엇보다 이 방법은 배포판에 구애받지 않습니다. 어떤 가상 머신 어플라이언스든, 어떤 파일시스템이든, 테스트에 필요한 변경을 자유롭게 적용할 수 있습니다. 즐거운 탐험 되세요.