보안

SSH의 root 로그인을 (안전하게) 비활성화하는 방법

SSH의 root 로그인을 비활성화해 root@에 비밀번호를 두드려대는 봇을 막으세요. 먼저 sudo 사용자를 만들고, PermitRootLogin no를 설정하고, 휴대폰에서 하세요 ── 자신을 잠가버리지 않으면서.

CC Chen Chen· 창업자·2026년 6월 24일·5분 분량

왜 SSH의 root 로그인을 비활성화해야 하나?

root는 모든 공격자가 이미 알고 있는 유일한 사용자 이름입니다. 인터넷을 스캔하는 봇은 당신의 사용자 이름을 추측하지 않습니다 ── 그저 root를 향해 비밀번호를 하나씩 두드려댑니다. root의 SSH 로그인을 비활성화하면 이 부류의 공격은 통째로 작동하지 않게 되고, 공격자는 이제 사용자 이름과 인증 방식을 둘 다 맞혀야 합니다. 대신 일반 사용자로 로그인하고 root가 필요할 때 sudo를 사용합니다. 이것은 가성비가 가장 높고 수고가 가장 적은 SSH 하드닝 중 하나입니다.

1단계 ── 먼저 sudo 사용자를 확보하기

다른 방법으로 들어갈 수 있게 되기 전에는 root를 비활성화하지 마세요. 그렇지 않으면 자신을 잠가버리게 됩니다. sudo 권한을 가진 일반 사용자를 만듭니다.

# 以 root 身份,建用户并给 sudo
adduser alice
usermod -aG sudo alice   # Debian/Ubuntu
# (RHEL/Fedora:usermod -aG wheel alice)

그런 다음 별도의 세션에서 그 사용자로 로그인할 수 있고 sudo -v를 실행할 수 있는지 확인합니다. 그것이 작동한 후에만 계속 진행하세요.

2단계 ── 그 사용자에게 키를 설정하기(권장)

온 김에 새 사용자에게 키 인증을 설정하세요 ── 이것이야말로 진짜 보안상의 이득이며, root만 비활성화하는 것보다 효과가 큽니다. 공개 키를 /home/alice/.ssh/authorized_keys에 추가합니다(TermAI 같은 모바일 클라이언트가 대신 배포해 줄 수 있습니다). SSH 키 vs 비밀번호를 참고하세요.

3단계 ── root 로그인 비활성화하기

/etc/ssh/sshd_config에서 다음과 같이 설정합니다.

PermitRootLogin no

그런 다음 SSH를 재시작합니다:sudo systemctl restart ssh. 현재 세션을 열어 둔 채로, 새 연결에서 여전히 당신의 사용자로 로그인할 수 있는지 ── 그리고 ssh root@host가 이제 거부되는지 확인합니다.

root가 아닌 일반 사용자로 로그인한 SSH 세션
일반 사용자로 로그인하고 sudo를 사용한다. PermitRootLogin no를 설정하면 직접적인 root SSH는 거부되고 ── root@를 두드려대는 봇은 아무것도 얻지 못한다.

휴대폰에서 하기

이 모든 것은 모바일 SSH 클라이언트에서 할 수 있습니다:SFTP나 nanosshd_config를 편집하고, 터미널에서 사용자 생성/sudo 명령을 실행하고, 저장된 연결의 사용자 이름을 root에서 새 사용자로 변경합니다. 당신의 배포판에 맞는 정확한 usermod 그룹이 확실하지 않다면 TermAI 어시스턴트에게 물어보세요 ── 세션으로부터 당신이 Debian인지 RHEL인지 파악해 올바른 명령을 제시합니다.

Run 버튼과 함께 사용자 관리 명령을 제안하는 TermAI
'sudo 사용자를 추가해'라고 물으면 이 배포판에 맞는 올바른 명령이 ── 연결된 서버에 근거해 ── 제시되어, 검토한 뒤 실행할 수 있다.

하드닝 체크리스트의 나머지

root 비활성화는 다른 기본 항목들과 자연스럽게 짝을 이룹니다. 영향이 큰 순서로 나열합니다.

  1. 키 + PasswordAuthentication no ── 가장 큰 이득(키 vs 비밀번호).
  2. root 로그인 비활성화 ── 이 글.
  3. fail2ban ── 반복하는 침입자를 자동 차단.
  4. Tailscale/WireGuard 뒤에 두기 ── 아예 SSH를 공개로 노출하지 않기.
  5. 선택적으로 포트 변경 ── 로그를 조용하게 하기 위해(SSH 포트를 바꿔야 할까?).

FAQ

SSH의 root 로그인을 어떻게 비활성화하나요?
/etc/ssh/sshd_config에서 PermitRootLogin no를 설정하고 SSH를 재시작합니다 ── 로그인할 수 있는 sudo 사용자를 만든 후에.

제가 잠겨버리지 않을까요?
sudo 사용자 단계를 건너뛴 경우에만 그렇습니다. root를 비활성화하기 전에 별도의 세션에서 sudo 권한을 가진 일반 사용자를 만들고 테스트하세요.

root를 비활성화하면서 키도 써야 하나요?
네 ── 둘은 상호 보완적입니다. 키는 비밀번호 공격을 막고, root 비활성화는 모두가 노리는 유일한 사용자 이름을 제거합니다.

핵심 요약

  • 이유:root는 누구나 노리는 브루트포스 표적;비활성화하면 그 공격을 막는다
  • 방법:sudo 사용자 생성 → 테스트 → PermitRootLogin no → SSH 재시작
  • 잠기지 않기:먼저 별도 세션에서 sudo 사용자가 작동하는지 확인
  • 짝지을 것:키 인증 + PasswordAuthentication no
Try TermAI

Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.

Was this useful? ← Back to blog