우분투 실전 명령어 | SSH 키 로그인 전환과 보안 설정

언제 쓰는가

비밀번호 로그인만 열어둔 서버는 무차별 대입 공격에 계속 노출됩니다. 운영 서버를 붙잡고 관리해야 할 때는 SSH 키 로그인으로 바꾸고, 루트 직접 접속까지 막아두는 게 기본입니다. 이 글은 “접속은 더 안전하게, 운영은 불편하지 않게” 설정하는 최소 명령만 정리했습니다.

바로 쓰는 명령어

# 1) 로컬(내 PC)에서 키 생성
ssh-keygen -t ed25519 -C "devlab-admin" -f ~/.ssh/devlab_ed25519

# 2) 서버에 공개키 등록
ssh-copy-id -i ~/.ssh/devlab_ed25519.pub ubuntu@SERVER_IP

# 3) 서버 SSH 설정 백업 후 편집
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F-%H%M)
sudo nano /etc/ssh/sshd_config

# 4) 아래 항목 확인/수정
# PubkeyAuthentication yes
# PasswordAuthentication no
# PermitRootLogin no
# (선택) AllowUsers ubuntu deploy

# 5) 설정 문법 검사 + 재시작
sudo sshd -t
sudo systemctl restart ssh
# 새 터미널에서 키 로그인 검증
ssh -i ~/.ssh/devlab_ed25519 ubuntu@SERVER_IP

# 서버에서 접속 로그 확인
sudo journalctl -u ssh --since "10 min ago" --no-pager

핵심 옵션/패턴

  • ed25519: 키 길이/성능 균형이 좋아서 기본 선택으로 무난합니다.
  • PasswordAuthentication no: 비밀번호 인증 자체를 막아 공격면을 줄입니다.
  • PermitRootLogin no: 루트 계정 직접 로그인 차단. 운영은 일반 계정 + sudo로 처리합니다.
  • sshd -t: 재시작 전에 설정 문법 오류를 먼저 잡아 장애를 예방합니다.

자주 하는 실수

  • 기존 SSH 세션을 끊고 바로 PasswordAuthentication no를 적용하는 실수
    • 해결: 반드시 새 터미널로 키 로그인 성공 확인 후 기존 세션을 닫으세요.
  • 공개키를 잘못된 계정 홈에 넣는 실수
    • 해결: 대상 계정의 ~/.ssh/authorized_keys 위치와 권한을 확인하세요.
  • sshd -t 검사 없이 재시작하는 실수
    • 해결: 문법 오류가 있으면 즉시 접속 불가가 될 수 있으니 검사 후 재시작하세요.

검증 방법

# 클라이언트: 비밀번호 인증이 비활성인지 확인
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no ubuntu@SERVER_IP

# 서버: ssh 서비스 상태 확인
systemctl status ssh --no-pager

# 서버: 최근 실패/성공 로그 확인
sudo journalctl -u ssh -n 50 --no-pager

비밀번호 인증이 꺼졌다면 첫 번째 명령은 Permission denied로 끝나는 게 정상입니다.

실행 결과 예시

$ ssh -i ~/.ssh/devlab_ed25519 [email protected]
Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.8.0-31-generic x86_64)

$ ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no [email protected]
[email protected]: Permission denied (publickey).

$ sudo sshd -t
# 
$ systemctl status ssh --no-pager
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; preset: enabled)
     Active: active (running) since Wed 2026-02-18 21:34:12 KST

출처

  • OpenSSH Manual
  • Ubuntu Server Guide
  • Ubuntu manpages