/엔지니어/보안 설정/SSH 2단계 인증 — Google Authenti
보안 설정중급UbuntuDebianCentOSssh2faotp

SSH 2단계 인증 — Google Authenticator OTP 설정

Google Authenticator PAM 모듈을 설치해 SSH 로그인에 TOTP 기반 2단계 인증을 추가하는 방법을 단계별로 설명합니다.

사전 요구사항

  • SSH 키 인증이 이미 설정되어 있을 것 (잠김 방지)
  • 스마트폰에 Google Authenticator 또는 Authy 설치
  • 테스트용 SSH 세션을 별도로 유지한 채 진행

1. PAM 모듈 설치

Bash
# Ubuntu / Debian
sudo apt update && sudo apt install -y libpam-google-authenticator

# CentOS / RHEL
sudo yum install -y epel-release
sudo yum install -y google-authenticator

2. 사용자별 OTP 초기화

각 사용자가 직접 실행해야 합니다.

Bash
google-authenticator

질문에 답합니다:

  1. 시간 기반 토큰? → y (TOTP 권장)
  2. QR 코드 스캔 → 스마트폰 앱으로 스캔
  3. 비상 코드 (Emergency scratch codes) → 안전한 곳에 보관
  4. 파일 업데이트? → y
  5. 여러 사용 허용 (30초 내)? → n (재사용 방지)
  6. 시간 오차 허용 (±1분)? → y
  7. Rate limiting? → y (30초에 3회 제한)

3. PAM 설정

Bash
sudo nano /etc/pam.d/sshd

파일 상단에 추가:

CODE
# 2FA — OTP 필수 (키 인증 사용자도 OTP 요구)
auth required pam_google_authenticator.so

# 또는 키 인증 성공 시 OTP 생략 (선택)
# auth [success=done default=ignore] pam_google_authenticator.so nullok

4. sshd_config 설정

Bash
sudo nano /etc/ssh/sshd_config
CODE
# 키보드 인터랙티브 활성화
ChallengeResponseAuthentication yes
# 또는 (OpenSSH 8.7+)
KbdInteractiveAuthentication yes

# 패스워드 + OTP 조합
UsePAM yes

# 인증 방식: publickey와 keyboard-interactive 모두 요구
AuthenticationMethods publickey,keyboard-interactive
# 패스워드 + OTP만 쓰려면:
# AuthenticationMethods keyboard-interactive
Bash
# 설정 검증
sudo sshd -t

# 재시작
sudo systemctl restart sshd

5. 연결 테스트

현재 세션을 닫지 말고 새 터미널에서 테스트합니다.

Bash
ssh user@server
# Verification code: (앱에서 6자리 입력)

비상 접속 — OTP 없이 로그인

스마트폰을 잃어버린 경우, 초기화 시 저장한 비상 코드(Scratch code)를 OTP 입력란에 입력합니다. 각 코드는 1회만 사용 가능합니다.

Bash
# ~/.google_authenticator 파일에서 비상 코드 확인 (서버 직접 접속 필요)
cat ~/.google_authenticator

특정 사용자만 2FA 제외

CODE
# /etc/pam.d/sshd
auth [success=1 default=ignore] pam_succeed_if.so user in ci-runner:deploy
auth required pam_google_authenticator.so
#ssh#2fa#otp#google-authenticator#totp#보안
편집 안내 · Editorial Note

이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.