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 블록에 따라 달라질 수 있으므로 최종값을 반드시 확인합니다.

문법 검사, 반영과 별도 세션 테스트

  1. 현재 관리자 세션을 계속 열어 둡니다.
  2. sshd -t로 문법을 검사합니다. 출력이 없고 종료 상태가 0이어야 합니다.
  3. SSH 서비스를 다시 불러옵니다.
  4. 새 터미널에서 root 공개 키 로그인을 시험합니다.
  5. 비밀번호 로그인이 거부되고 기존 관리자 계정은 정상인지 확인합니다.
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와 인증 관련 설정의 정확한 의미를 확인할 수 있습니다.

같은 카테고리의 다른 글
Rocky Linux / 방화벽 관리하는 방법

Rocky Linux / 방화벽 관리하는 방법

Rocky Linux firewalld에서 영역, 서비스와 포트를 확인·관리하는 방법을 설명합니다. 런타임 시험 후 영구 저장하고 원본 주소를 제한하는 안전한 절차를 정리합니다.

Rocky Linux / PostgreSQL 설치하는 방법

Rocky Linux / PostgreSQL 설치하는 방법

Rocky Linux에 PostgreSQL을 설치하고 초기화·서비스 활성화·역할 생성·원격 접속을 구성하는 방법을 설명합니다. pg_hba.conf, SCRAM, 방화벽과 TLS 주의점도 정리합니다.

Rocky Linux / Memo

Rocky Linux / Memo

Rocky Linux와 관련된 잡다한 정보를 정리합니다.

Rocky Linux / 설치된 패키지 확인하는 방법

Rocky Linux / 설치된 패키지 확인하는 방법

Rocky Linux에서 설치된 패키지를 DNF와 RPM으로 확인하는 방법을 설명합니다. 전체 목록, 특정 파일의 소유 패키지, 설치 시각과 변경 검증 방법도 정리합니다.

Rocky Linux / DNF 사용법

Rocky Linux / DNF 사용법

Rocky Linux의 DNF로 패키지를 검색·설치·업데이트·삭제하는 방법을 설명합니다. 저장소, 거래 이력, 캐시와 안전한 운영 요령도 함께 정리합니다.

Rocky Linux / MariaDB 설치하는 방법

Rocky Linux / MariaDB 설치하는 방법

Rocky Linux에 MariaDB를 설치하고 초기 보안을 설정하는 방법을 설명합니다. 최소 권한 계정, 원격 수신 주소, 방화벽 원본 제한과 TLS 점검 사항도 정리합니다.

Rocky Linux / SELinux 끄는 방법

Rocky Linux / SELinux 끄는 방법

Rocky Linux의 SELinux 상태와 모드를 확인하고 차단 원인을 해결하는 방법을 설명합니다. Permissive 전환, 정책 조정과 완전 비활성화 시 주의점도 정리합니다.

Rocky Linux / GUI 환경 만드는 방법

Rocky Linux / GUI 환경 만드는 방법

Rocky Linux에 GNOME GUI를 설치하고 그래픽 부팅을 설정하는 방법을 설명합니다. Rocky Linux 8·9의 XRDP와 Rocky Linux 10의 GNOME 원격 데스크톱 차이도 정리합니다.

Rocky Linux / root 계정으로 ssh 접속 가능하게 설정하는 방법

Rocky Linux / root 계정으로 ssh 접속 가능하게 설정하는 방법

Rocky Linux에서 root SSH 접속이 필요할 때 공개 키로만 허용하는 안전한 절차를 설명합니다. 설정 검사, 접속 제한과 원상 복구 방법도 정리합니다.

Rocky Linux / IP 설정하는 방법

Rocky Linux / IP 설정하는 방법

Rocky Linux에서 nmcli로 고정 IP와 DHCP, DNS, IPv6 연결 프로필을 설정하는 방법을 설명합니다. 원격 변경 전 주의점과 확인 명령도 함께 정리합니다.