Zettelkasten/Literature(리터레처)/SSH 키 기반 인증 - 리터레처.md

SSH 키 기반 인증 - 리터레처

SSH 키 기반 인증

SSH 키 기반 인증의 개념

SSH 키 기반 인증은 비대칭 암호화 방식을 사용하는 인증 방법이다. 사용자는 ssh-keygen 명령을 통해 한 쌍의 키(공개키와 개인키)를 생성한다.

키 쌍의 역할

  • 공개키(Public Key): 접속하려는 서버에 등록
  • 개인키(Private Key): 클라이언트에 안전하게 보관 (절대 공유 금지)

Windows OpenSSH의 특징

Windows 10/11에 포함된 OpenSSH Server는 보안을 위해 특정 상황에서 비밀번호 인증을 제한한다.

관리자 계정 특별 정책

  • Administrators 그룹 사용자는 기본 설정에서 공개키 인증만 허용
  • 무차별 대입(Brute Force) 공격 방지를 위한 설계
  • sshd_configMatch Group administrators 섹션에서 설정

👉 자세한 내용: Windows SSH 서버의 보안 정책은 관리자 계정에 대해 키 기반 인증을 강제한다

인증 프로세스

  1. 클라이언트가 서버에 접속 시도
  2. 서버가 등록된 공개키 확인 (~/.ssh/authorized_keys)
  3. 서버가 암호화된 챌린지(challenge) 전송
  4. 클라이언트가 개인키로 복호화하여 응답
  5. 검증 성공 시 접속 허용

챌린지-응답 방식의 보안성

  • 개인키 자체는 네트워크로 전송되지 않음
  • 세션마다 다른 챌린지 사용
  • 재생 공격(Replay Attack) 방지

비밀번호 인증과의 비교

특성 키 기반 인증 비밀번호 인증
보안성 브루트포스 공격에 매우 강함 약한 비밀번호 사용 시 취약
편의성 한 번 설정 후 자동 인증 매번 비밀번호 입력 필요
자동화 스크립트/CI/CD에서 활용 용이 자동화 어려움
관리 키 파일 관리 필요 비밀번호 기억 필요

실용적 활용

GitHub/GitLab

  • Git 원격 저장소 접근에 SSH 키 사용
  • HTTPS보다 편리한 인증 방식
  • Personal Access Token 대안

서버 자동화

  • Ansible, Terraform 등 Infrastructure as Code
  • 무인 배포 스크립트
  • 크론잡(Cron Job) 실행

WSL-Windows 간 통신

  • WSL에서 Windows SSH Server 접속
  • 개발 환경 통합
  • 파일 동기화 자동화

👉 관련: WSL2

키 생성 및 설정

키 생성

ssh-keygen -t ed25519 -C "[email protected]"
# 또는 RSA (더 널리 호환)
ssh-keygen -t rsa -b 4096 -C "[email protected]"

공개키 배포

# Linux/Mac
ssh-copy-id user@hostname
 
# 수동 방식
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys

보안 Best Practices

  1. 개인키 보호

    • 적절한 권한 설정 (chmod 600 ~/.ssh/id_ed25519)
    • 암호구문(passphrase) 사용 권장
  2. 공개키 관리

    • 서버의 authorized_keys 정기적 검토
    • 불필요한 키 제거
  3. 키 순환(Rotation)

    • 정기적으로 새 키 생성
    • 오래된 키 폐기

관련 Permanent 노트

댓글

첫 번째 댓글을 남겨보세요.