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

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

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

목차
  1. 사전 요구사항
  2. 1. PAM 모듈 설치
  3. 2. 사용자별 OTP 초기화
  4. 3. PAM 설정
  5. 4. sshd_config 설정
  6. 5. 연결 테스트
  7. 비상 접속 — OTP 없이 로그인
  8. 특정 사용자만 2FA 제외

사전 요구사항

  • 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 도구가 초안 작성에 사용될 수 있습니다. 명령어의 실행 여부와 검증 환경은 각 가이드에 기재된 근거를 확인하세요. 적용 전 사용 중인 버전의 공식 문서를 확인하고, 오류는 이메일로 알려주세요. 이메일로 제보

주제 관련 공식 문서(자동 연결 · 문장별 근거 아님)GNU/Linux man 페이지 ↗OWASP 공식 문서 ↗

질문 & 답변 (Q&A)

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