안녕하세요. 비전 IDC 기술팀입니다.
root 계정 비밀번호는 서버 전체 권한과 직결되므로 주기적으로 변경하는 것이 좋고, 담당자 교체나 비밀번호 노출이 의심될 때는 즉시 바꿔야 합니다. 반대로 비밀번호를 잊어버려 root로 로그인할 수 없게 되면 서버 콘솔에서 부팅 과정에 개입해 비밀번호를 다시 설정해야 합니다.
이 문서에서는 CentOS 7을 기준으로 로그인한 상태에서 passwd 명령으로 root 비밀번호를 변경하는 방법과, 비밀번호를 분실했을 때 GRUB2 부팅 메뉴에서 rd.break 옵션을 사용해 재설정하는 방법을 설명합니다. 아직 운영 중인 CentOS 6 서버를 위한 싱글 유저 모드 재설정 방법도 함께 정리했습니다.
적용 환경
- 운영체제: CentOS Linux 7 (부트로더 GRUB2), CentOS Linux 6 (GRUB Legacy)
- 사용 명령:
passwd,mount,chroot - 비밀번호 분실 시 필요 조건: VPS는 VNC 또는 웹 콘솔 접속, 단독서버는 KVM/IPMI 등 원격 콘솔 접속
- SSH 접속만으로는 분실한 root 비밀번호를 재설정할 수 없습니다.
1. 로그인한 상태에서 root 비밀번호 변경
root 계정으로 로그인한 경우
현재 root로 로그인되어 있다면 인자 없이 passwd를 실행합니다. 인자를 생략하면 현재 로그인한 계정의 비밀번호를 변경합니다.
whoami
passwd
새 비밀번호를 두 번 입력하라는 프롬프트가 차례로 표시됩니다. 입력하는 동안 화면에는 아무것도 표시되지 않습니다. 두 값이 일치하고 정책을 만족하면 다음과 같이 성공 메시지가 출력됩니다.
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
sudo 권한이 있는 일반 계정으로 로그인한 경우
root로 직접 로그인하지 않고 wheel 그룹 등 sudo 권한이 있는 계정을 사용한다면 다음과 같이 root 비밀번호를 변경할 수 있습니다. 이때 처음 묻는 비밀번호는 root가 아니라 현재 계정의 비밀번호입니다.
sudo passwd root
다른 사용자 계정의 비밀번호 변경
root 권한으로는 다른 계정의 비밀번호도 기존 비밀번호 없이 변경할 수 있습니다. username은 실제 계정 이름으로 바꿔 입력합니다.
passwd username
변경 결과 확인
계정의 비밀번호 상태와 마지막 변경일은 다음 명령으로 확인할 수 있습니다.
passwd -S root
chage -l root
2. 비밀번호 분실 시 사전 확인 사항
root 비밀번호를 잊어버렸다면 먼저 다른 방법으로 root 권한을 얻을 수 있는지 확인합니다. sudo 권한이 있는 일반 계정으로 로그인할 수 있거나, root 계정에 SSH 키 인증이 설정되어 있다면 부팅 과정에 개입할 필요 없이 1장의 방법으로 비밀번호를 바로 변경할 수 있습니다.
이런 방법이 없다면 서버를 재부팅해 부트로더 단계에서 작업해야 합니다. 이 과정은 SSH 연결이 끊긴 상태에서 진행되므로 반드시 화면과 키보드를 직접 조작할 수 있는 콘솔이 필요합니다.
- VPS: 서비스에서 제공하는 VNC 콘솔 또는 웹 콘솔로 접속합니다.
- 단독서버: KVM/IPMI 등 원격 콘솔을 사용합니다. 원격 콘솔을 사용할 수 없는 환경이라면 비전 IDC 기술지원에 요청해 주십시오.
3. CentOS 7에서 분실한 root 비밀번호 재설정 (rd.break)
CentOS 7에서는 부팅 초기 단계(initramfs)에서 멈추도록 하는 rd.break 커널 옵션을 사용합니다. 이 단계에서는 실제 루트 파일시스템이 /sysroot에 읽기 전용으로 마운트되어 있으며, 이를 쓰기 가능하게 바꾼 뒤 비밀번호를 변경합니다.
1단계: GRUB2 메뉴에서 부팅 옵션 편집
- 콘솔 화면을 열어 둔 상태에서 서버를 재부팅합니다.
- GRUB2 부팅 메뉴가 표시되면 방향키를 눌러 자동 부팅 카운트다운을 멈춥니다. 메뉴가 너무 빨리 지나간다면 재부팅 직후 방향키를 여러 번 눌러 둡니다.
- 평소 부팅하는 커널 항목(보통 맨 위 항목)을 선택하고 e 키를 누릅니다.
- 편집 화면에서
linux16으로 시작하는 줄을 찾습니다. UEFI로 부팅하는 서버에서는linuxefi로 표시됩니다. - 해당 줄의 맨 끝으로 이동해 한 칸 띄우고
rd.break를 추가합니다. 줄이 길어 화면에서 여러 줄로 보일 수 있으니 End 키나 Ctrl+E로 줄 끝으로 이동하면 편리합니다. - Ctrl+X를 눌러 수정한 옵션으로 부팅합니다.
편집 후 해당 줄의 끝부분은 대략 다음과 같은 형태가 됩니다. 커널 버전과 UUID 등 앞부분은 서버마다 다르므로 그대로 두고 끝에만 추가합니다.
linux16 /vmlinuz-3.10.0-...x86_64 root=... ro crashkernel=auto rhgb quiet LANG=en_US.UTF-8 rd.break
2단계: 루트 파일시스템을 쓰기 가능하게 다시 마운트
잠시 후 switch_root:/# 프롬프트가 표시됩니다. 실제 시스템 디스크는 /sysroot에 읽기 전용으로 마운트되어 있으므로 쓰기 가능하도록 다시 마운트합니다.
mount -o remount,rw /sysroot
3단계: chroot로 실제 시스템 환경 진입
chroot /sysroot
프롬프트가 sh-4.2#과 같은 형태로 바뀌면 실제 설치된 시스템을 기준으로 명령을 실행할 수 있는 상태입니다.
4단계: root 비밀번호 변경
passwd
새 비밀번호를 두 번 입력합니다. 원격 콘솔은 키보드 배열 문제로 특수문자가 다르게 입력되는 경우가 있으므로, 이 단계에서는 영문과 숫자 위주로 설정해 로그인을 확인한 뒤 SSH로 접속해 최종 비밀번호로 다시 변경하는 방법도 안전합니다.
5단계: SELinux 레이블 재지정 예약
touch /.autorelabel
이 단계에서는 SELinux 정책이 로드되지 않은 상태로 /etc/shadow 파일이 수정되기 때문에 파일의 SELinux 보안 컨텍스트가 올바르지 않을 수 있습니다. /.autorelabel 파일을 만들어 두면 다음 부팅 시 파일시스템 전체의 레이블이 다시 지정됩니다. 이 과정을 생략하면 SELinux가 Enforcing인 서버에서 새 비밀번호로도 로그인하지 못할 수 있습니다.
6단계: 종료 후 정상 부팅
exit
exit
첫 번째 exit는 chroot 환경을 빠져나오고, 두 번째 exit는 initramfs 셸을 종료해 부팅을 계속 진행합니다. SELinux 레이블 재지정이 진행되며, 완료 후 서버가 자동으로 한 번 더 재부팅될 수 있습니다.
7단계: 로그인 확인
부팅이 끝나면 콘솔에서 root와 새 비밀번호로 로그인되는지 확인합니다. 이후 SSH 접속도 확인합니다.
whoami
getenforce
4. CentOS 6에서 싱글 유저 모드로 재설정
CentOS 6은 GRUB Legacy 부트로더를 사용하므로 절차가 다릅니다. 부팅 시 커널 옵션에 싱글 유저 모드를 지정하면 비밀번호 입력 없이 root 셸로 진입하는 기본 구성을 이용합니다.
- 콘솔을 연 상태에서 서버를 재부팅합니다.
- 부팅 카운트다운 화면이 표시되면 아무 키나 눌러 GRUB 메뉴로 진입합니다.
- 부팅할 커널 항목을 선택하고 e 키를 누릅니다.
- 표시되는 항목 중
kernel로 시작하는 줄을 선택하고 다시 e 키를 누릅니다. - 줄 끝에 한 칸 띄우고
single또는1을 입력한 뒤 Enter를 누릅니다. - 항목 목록 화면으로 돌아오면 b 키를 눌러 부팅합니다.
root 셸 프롬프트가 표시되면 비밀번호를 변경합니다.
passwd
Authentication token manipulation error가 표시된다면 루트 파일시스템이 읽기 전용으로 마운트된 경우일 수 있습니다. 이때는 다시 마운트한 뒤 passwd를 실행합니다.
mount -o remount,rw /
passwd
변경을 마쳤다면 재부팅해 정상 모드로 시작하고, 새 비밀번호로 로그인되는지 확인합니다.
reboot
5. 자주 발생하는 문제와 확인 방법
| 증상 | 가능한 원인 | 확인 및 해결 방향 |
|---|---|---|
| GRUB 메뉴가 표시되지 않고 바로 부팅됨 | 메뉴 대기 시간이 짧거나 콘솔 연결이 늦음 | 콘솔을 먼저 열어 둔 뒤 재부팅하고, 부팅 직후부터 방향키를 반복해서 누릅니다. |
passwd 실행 시 Authentication token manipulation error |
파일시스템이 읽기 전용 상태 | CentOS 7은 mount -o remount,rw /sysroot 후 chroot /sysroot를 했는지, CentOS 6은 mount -o remount,rw /를 실행했는지 확인합니다. |
| 재설정 후에도 새 비밀번호로 로그인 불가 | /.autorelabel 누락으로 SELinux 컨텍스트 불일치 |
다시 rd.break로 진입해 touch /.autorelabel까지 수행한 뒤 재부팅합니다. |
| 콘솔 로그인은 되지만 SSH root 로그인 실패 | PermitRootLogin 설정 또는 무차별 대입 차단 도구 |
grep -i PermitRootLogin /etc/ssh/sshd_config로 설정을 확인하고, 일반 계정으로 접속한 뒤 su -를 사용합니다. |
| 특수문자가 포함된 비밀번호가 맞지 않음 | 원격 콘솔의 키보드 배열 차이 | 콘솔에서는 영문·숫자로 임시 설정한 뒤 SSH 접속 후 최종 비밀번호로 변경합니다. |
Ctrl+X를 눌러도 switch_root 프롬프트가 나타나지 않음 |
rd.break를 잘못된 줄에 추가했거나 오타 |
linux16 또는 linuxefi 줄 끝에 정확히 입력했는지 확인합니다. |
로그인 실패 원인을 확인하려면 콘솔로 로그인한 뒤 인증 로그를 확인합니다.
tail -n 50 /var/log/secure
해결되지 않으면 비전 IDC 1:1 문의(https://visionidc.com/submitticket.php) 또는 텔레그램 VISIONIDC24로 문의해 주시기 바랍니다.
6. 관련 기술자료와 공식 참고자료
관련 비전 IDC 기술자료
- Ubuntu 22.04 root 비밀번호 변경 방법 — Ubuntu 서버를 사용하는 경우
- Ubuntu 22.04 싱글모드로 진입 — Ubuntu 서버에서 복구 모드로 진입하는 방법
- CentOS 버전 확인 방법 — 서버가 CentOS 6인지 7인지 확인할 때 참고
- 리눅스 서버 SSH 키 인증 로그인 설정 방법 — 비밀번호 분실에 대비해 키 인증을 함께 설정하는 방법
- Windows PC에서 PuTTY로 SSH 접속하는 방법 — 비밀번호 변경 후 접속 확인
공식 참고자료
- CentOS Project - CentOS Linux — CentOS Linux 지원 종료 일정
7. 자주 묻는 질문
SSH로 접속한 상태에서 분실한 root 비밀번호를 재설정할 수 있나요?
root 권한을 얻을 수 있는 다른 수단(sudo 권한 계정, root 키 인증 등)이 있다면 가능합니다. 이런 수단이 전혀 없다면 부팅 과정에 개입해야 하므로 VNC·웹 콘솔이나 KVM/IPMI 같은 콘솔 접속이 필요합니다.
touch /.autorelabel은 꼭 실행해야 하나요?
SELinux가 비활성화(disabled)된 서버라면 영향이 없지만, 현재 설정을 확신할 수 없다면 실행하는 것이 안전합니다. 다음 부팅 시간이 조금 길어지는 것 외에는 부작용이 거의 없습니다.
비밀번호를 바꾸면 실행 중인 서비스에 영향이 있나요?
root 비밀번호 변경 자체는 웹 서버나 데이터베이스 같은 서비스 동작에 영향을 주지 않습니다. 다만 비밀번호로 서버에 접속하는 백업 스크립트나 외부 관리 도구가 있다면 새 비밀번호로 함께 수정해야 합니다. MySQL 등 데이터베이스의 root 계정은 운영체제 root와 별개입니다.
CentOS 7에서도 single 옵션을 사용할 수 있나요?
CentOS 7은 systemd를 사용하며, 기본 구성에서 복구 대상으로 부팅하면 root 비밀번호를 요구합니다. 비밀번호를 모르는 상황에서는 이 문서의 rd.break 방법을 사용하십시오.
마무리
이번 문서에서는 CentOS 7에서 passwd로 root 비밀번호를 변경하는 방법과, 비밀번호를 분실했을 때 rd.break로 initramfs 단계에 진입해 재설정하는 방법, 그리고 CentOS 6의 싱글 유저 모드 재설정 절차를 살펴봤습니다. CentOS 7 절차에서는 touch /.autorelabel을 빠뜨리지 않는 것이 가장 중요합니다.
콘솔 접근 권한이 있다면 누구나 같은 방법으로 root 비밀번호를 바꿀 수 있으므로 콘솔 계정 정보도 서버 비밀번호만큼 안전하게 관리하시기 바랍니다. 또한 지원이 종료된 CentOS 서버는 보안 업데이트가 제공되지 않으므로 운영체제 이전 계획을 함께 검토하시기 바랍니다.
