안녕하세요. 비전 IDC 기술팀입니다.
root 계정 비밀번호는 서버 전체 권한과 직결되므로 주기적으로 변경하는 것이 좋고, 담당자 교체나 비밀번호 노출이 의심될 때는 즉시 바꿔야 합니다. 반대로 비밀번호를 잊어버려 root로 로그인할 수 없게 되면 서버 콘솔에서 부팅 과정에 개입해 비밀번호를 다시 설정해야 합니다.
이 문서에서는 CentOS 7을 기준으로 로그인한 상태에서 passwd 명령으로 root 비밀번호를 변경하는 방법과, 비밀번호를 분실했을 때 GRUB2 부팅 메뉴에서 rd.break 옵션을 사용해 재설정하는 방법을 설명합니다. 아직 운영 중인 CentOS 6 서버를 위한 싱글 유저 모드 재설정 방법도 함께 정리했습니다.
지원 종료 안내: CentOS Linux 7은 2024년 6월 30일, CentOS Linux 6은 2020년 11월 30일에 지원이 종료되었습니다. 아래 절차는 기존 서버의 유지보수와 복구를 위한 내용이며, 장기 운영 서버는 지원 중인 운영체제로 이전하는 것을 권장합니다.
적용 환경
- 운영체제: CentOS Linux 7 (부트로더 GRUB2), CentOS Linux 6 (GRUB Legacy)
- 사용 명령:
passwd,mount,chroot - 비밀번호 분실 시 필요 조건: VPS는 VNC 또는 웹 콘솔 접속, 단독서버는 KVM/IPMI 등 원격 콘솔 접속
- SSH 접속만으로는 분실한 root 비밀번호를 재설정할 수 없습니다.
목차
- 로그인한 상태에서 root 비밀번호 변경
- 비밀번호 분실 시 사전 확인 사항
- CentOS 7에서 분실한 root 비밀번호 재설정 (rd.break)
- CentOS 6에서 싱글 유저 모드로 재설정
- 자주 발생하는 문제와 확인 방법
- 관련 기술자료와 공식 참고자료
- 자주 묻는 질문
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
참고: BAD PASSWORD 경고는 비밀번호가 짧거나 사전 단어와 비슷할 때 표시됩니다. root 권한으로 실행하면 경고가 표시되어도 변경이 진행될 수 있지만, 가능한 한 경고가 나오지 않는 길고 추측하기 어려운 비밀번호를 사용하십시오. 영문 대소문자, 숫자, 특수문자를 조합하고 다른 서비스와 같은 비밀번호를 재사용하지 않는 것이 좋습니다.
주의: 비밀번호를 변경한 직후에는 현재 SSH 세션을 닫지 말고, 새 터미널에서 변경한 비밀번호로 로그인되는지 먼저 확인하십시오. 입력 실수로 의도하지 않은 값이 저장된 경우에도 기존 세션에서 바로 다시 변경할 수 있습니다.
2. 비밀번호 분실 시 사전 확인 사항
root 비밀번호를 잊어버렸다면 먼저 다른 방법으로 root 권한을 얻을 수 있는지 확인합니다. sudo 권한이 있는 일반 계정으로 로그인할 수 있거나, root 계정에 SSH 키 인증이 설정되어 있다면 부팅 과정에 개입할 필요 없이 1장의 방법으로 비밀번호를 바로 변경할 수 있습니다.
이런 방법이 없다면 서버를 재부팅해 부트로더 단계에서 작업해야 합니다. 이 과정은 SSH 연결이 끊긴 상태에서 진행되므로 반드시 화면과 키보드를 직접 조작할 수 있는 콘솔이 필요합니다.
- VPS: 서비스에서 제공하는 VNC 콘솔 또는 웹 콘솔로 접속합니다.
- 단독서버: KVM/IPMI 등 원격 콘솔을 사용합니다. 원격 콘솔을 사용할 수 없는 환경이라면 비전 IDC 기술지원에 요청해 주십시오.
주의: 재설정 절차에는 서버 재부팅이 포함되어 운영 중인 서비스가 일시적으로 중단됩니다. 가능하다면 서비스 영향이 적은 시간에 진행하십시오. 또한 GRUB에 별도 비밀번호가 설정되어 있거나 디스크가 암호화되어 있다면 해당 비밀번호 없이는 아래 절차를 진행할 수 없습니다.
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
참고: GRUB 편집 화면에서 추가한 옵션은 이번 부팅에만 적용되며 설정 파일에 저장되지 않습니다. 부팅 화면에 메시지가 표시되지 않아 진행 상황을 알기 어렵다면 같은 줄에서 rhgb quiet를 지우고 부팅해도 됩니다.
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
참고: /etc/sysconfig/init에서 싱글 유저 모드에도 비밀번호를 요구하도록 설정한 서버는 이 방법으로 진입할 수 없습니다. 이 경우 설치 미디어의 복구 모드 등 다른 방법이 필요하므로 비전 IDC 기술지원에 문의해 주십시오.
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 서버는 보안 업데이트가 제공되지 않으므로 운영체제 이전 계획을 함께 검토하시기 바랍니다.
