Rocky Linux / root 계정으로 ssh 접속 가능하게 설정하는 방법
Rocky Linux에서 root 계정의 SSH 로그인을 허용할 수는 있지만, 일반 관리자 계정과 sudo를 사용하는 편이 더 안전하고 감사하기 쉽습니다. 반드시 root 직접 접속이 필요하다면 비밀번호 로그인은 열지 말고 공개 키 인증만 허용한 뒤, 설정 검사와 별도 세션 테스트를 거쳐 적용하십시오.
먼저 권장 방식 검토
일반 사용자로 로그인한 뒤 필요한 명령만 sudo로 실행하면 root 자격 증명의 직접 노출을 줄이고 사용자별 작업 기록을 남길 수 있습니다.
sudo useradd adminuser sudo usermod -aG wheel adminuser
계정을 만든 뒤에는 공개 키를 등록하고 새 세션에서 sudo -v가 동작하는지 확인합니다. 기존 SSH 연결을 닫기 전에 테스트해야 설정 실수로 잠기는 일을 피할 수 있습니다.
현재 SSH와 root 로그인 설정 확인
설정 파일의 한 줄만 보는 것보다 sshd -T로 include 파일과 기본값을 합친 최종 유효 설정을 확인하는 것이 정확합니다.
sudo sshd -T | grep -E '^(permitrootlogin|passwordauthentication|pubkeyauthentication) ' sudo grep -RinE '^[[:space:]]*(PermitRootLogin|PasswordAuthentication|PubkeyAuthentication)' \ /etc/ssh/sshd_config /etc/ssh/sshd_config.d
Match 조건이 있는 설정은 접속 사용자와 원본 주소에 따라 결과가 달라질 수 있습니다. 복잡한 환경에서는 sshd -T -C로 실제 조건을 지정해 확인하십시오.
root 공개 키 준비
키 파일과 권한 설정
신뢰할 수 있는 관리자의 공개 키를 root의 authorized_keys에 등록합니다. 아래 명령의 공개 키 문자열은 실제 공개 키 한 줄로 교체합니다.
sudo install -d -m 700 -o root -g root /root/.ssh echo 'ssh-ed25519 공개_키_문자열 관리자_식별자' | sudo tee -a /root/.ssh/authorized_keys sudo chown root:root /root/.ssh/authorized_keys sudo chmod 600 /root/.ssh/authorized_keys sudo restorecon -Rv /root/.ssh
개인 키는 서버에 올리지 않습니다. 공개 키를 추가할 때는 줄바꿈이 깨지지 않았는지, 이미 등록된 키와 중복되지 않는지 확인합니다.
공개 키 자체 제한
자동화 전용 키라면 from=, command=, restrict 같은 authorized_keys 옵션으로 접속 원본과 실행 기능을 줄일 수 있습니다. 다만 잘못된 제한은 작업을 중단시키므로 별도 키로 먼저 시험하십시오.
root 로그인을 공개 키로만 허용
기존 파일을 직접 덮어쓰기보다 배포판이 읽는 drop-in 디렉터리에 목적이 분명한 파일을 추가하면 변경을 추적하기 쉽습니다.
sudo tee /etc/ssh/sshd_config.d/90-root-key-login.conf > /dev/null <<'EOF' PermitRootLogin prohibit-password PubkeyAuthentication yes EOF
prohibit-password는 root의 비밀번호 및 키보드 대화형 인증을 금지하고 공개 키 같은 비밀번호 이외 방식만 허용합니다. 다른 설정 파일의 적용 순서와 Match 블록에 따라 달라질 수 있으므로 최종값을 반드시 확인합니다.
문법 검사, 반영과 별도 세션 테스트
- 현재 관리자 세션을 계속 열어 둡니다.
sshd -t로 문법을 검사합니다. 출력이 없고 종료 상태가 0이어야 합니다.- SSH 서비스를 다시 불러옵니다.
- 새 터미널에서 root 공개 키 로그인을 시험합니다.
- 비밀번호 로그인이 거부되고 기존 관리자 계정은 정상인지 확인합니다.
sudo sshd -t sudo systemctl reload sshd sudo sshd -T | grep -E '^(permitrootlogin|passwordauthentication|pubkeyauthentication) '
문법 검사가 실패하면 서비스를 다시 불러오지 말고 오류가 가리키는 파일과 줄을 수정합니다. 재시작보다 reload가 기존 연결을 유지하는 데 유리하지만, 새 접속 시험이 끝나기 전에는 현재 세션을 닫지 않는 것이 안전합니다.
접속 범위를 추가로 줄이는 방법
방화벽에서 관리망만 허용
SSH 포트를 인터넷 전체에 노출하지 말고 VPN 또는 관리망의 원본 주소만 허용합니다. 아래 주소는 문서용 예시이므로 실제 관리망으로 교체해야 합니다.
sudo firewall-cmd --permanent --zone=public --remove-service=ssh sudo firewall-cmd --permanent --zone=public \ --add-rich-rule='rule family="ipv4" source address="192.0.2.0/24" service name="ssh" accept' sudo firewall-cmd --reload sudo firewall-cmd --zone=public --list-all
원격 서버에서는 새 허용 규칙이 실제 접속 원본과 맞는지 확인하기 전에 기존 규칙을 제거하면 안 됩니다. 런타임 규칙으로 먼저 시험하고 콘솔 복구 수단을 확보하는 편이 안전합니다.
사용자와 키를 분리
- 사람마다 서로 다른 키를 발급해 퇴사·역할 변경 시 해당 키만 폐기합니다.
- 자동화 키와 사람의 대화형 관리 키를 구분합니다.
- 키에 암호를 설정하고 에이전트 전달 기능은 필요한 경우에만 사용합니다.
- SSH 로그와 비정상 인증 시도를 중앙에서 수집·경보합니다.
root 비밀번호 로그인을 꼭 열어야 하는 경우
PermitRootLogin yes와 비밀번호 인증을 함께 켜면 무차별 대입 공격과 자격 증명 유출의 피해가 바로 최고 권한으로 이어집니다. 오래된 장비 등 불가피한 사유가 있다면 인터넷에 직접 노출하지 않고 VPN·관리망, 짧은 적용 시간, 강한 임시 비밀번호와 집중 모니터링을 함께 사용하십시오.
PermitRootLogin yes PasswordAuthentication yes
이 값은 설정 예시일 뿐 권장 구성은 아닙니다. 작업이 끝나면 즉시 키 전용 또는 root 로그인 금지로 되돌리고, 사용한 비밀번호를 폐기해야 합니다.
root 직접 로그인을 다시 금지
더 이상 필요하지 않다면 drop-in 파일에서 다음 값을 적용한 뒤 문법 검사와 새 세션 시험을 반복합니다.
PermitRootLogin no
root 로그인을 금지하기 전에 일반 관리자 계정의 공개 키 로그인과 sudo가 정상인지 먼저 확인하십시오.
문제가 생겼을 때 확인할 항목
| 증상 | 확인 항목 |
|---|---|
| 공개 키가 거부됨 | /root/.ssh와 authorized_keys 권한·소유자·SELinux 문맥을 확인합니다. |
| 설정이 반영되지 않음 | sshd -T와 include 순서, Match 조건을 확인합니다. |
| 연결 시간 초과 | sshd 리슨 주소·포트, firewalld, 상위 방화벽과 라우팅을 확인합니다. |
| 서비스 reload 실패 | sshd -t와 journalctl -u sshd에서 구문 오류를 확인합니다. |
참고 문서
OpenSSH sshd_config 공식 매뉴얼에서 PermitRootLogin, Match와 인증 관련 설정의 정확한 의미를 확인할 수 있습니다.









