SSH 키 기반 인증 - 리터레처
SSH 키 기반 인증
SSH 키 기반 인증의 개념
SSH 키 기반 인증은 비대칭 암호화 방식을 사용하는 인증 방법이다. 사용자는 ssh-keygen 명령을 통해 한 쌍의 키(공개키와 개인키)를 생성한다.
키 쌍의 역할
- 공개키(Public Key): 접속하려는 서버에 등록
- 개인키(Private Key): 클라이언트에 안전하게 보관 (절대 공유 금지)
Windows OpenSSH의 특징
Windows 10/11에 포함된 OpenSSH Server는 보안을 위해 특정 상황에서 비밀번호 인증을 제한한다.
관리자 계정 특별 정책
- Administrators 그룹 사용자는 기본 설정에서 공개키 인증만 허용
- 무차별 대입(Brute Force) 공격 방지를 위한 설계
sshd_config의Match Group administrators섹션에서 설정
👉 자세한 내용: Windows SSH 서버의 보안 정책은 관리자 계정에 대해 키 기반 인증을 강제한다
인증 프로세스
- 클라이언트가 서버에 접속 시도
- 서버가 등록된 공개키 확인 (
~/.ssh/authorized_keys) - 서버가 암호화된 챌린지(challenge) 전송
- 클라이언트가 개인키로 복호화하여 응답
- 검증 성공 시 접속 허용
챌린지-응답 방식의 보안성
- 개인키 자체는 네트워크로 전송되지 않음
- 세션마다 다른 챌린지 사용
- 재생 공격(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
-
개인키 보호
- 적절한 권한 설정 (
chmod 600 ~/.ssh/id_ed25519) - 암호구문(passphrase) 사용 권장
- 적절한 권한 설정 (
-
공개키 관리
- 서버의
authorized_keys정기적 검토 - 불필요한 키 제거
- 서버의
-
키 순환(Rotation)
- 정기적으로 새 키 생성
- 오래된 키 폐기
관련 Permanent 노트
- KnowledgeBase/Zettelkasten/Permanent(퍼미넌트)/SSH 비대칭 키 인증은 Knowledge 기반에서 Possession 기반 인증으로의 패러다임 전환이다
- KnowledgeBase/Zettelkasten/Permanent(퍼미넌트)/SSH 비대칭 키 인증은 개인키를 네트워크로 전송하지 않고 소유를 증명한다
- KnowledgeBase/Zettelkasten/Permanent(퍼미넌트)/SSH 비대칭 키 인증은 자동화와 보안을 동시에 달성하는 방법이다
- 공개키의 배포는 보안에 영향을 미치지 않는다
- Windows SSH 서버의 보안 정책은 관리자 계정에 대해 키 기반 인증을 강제한다
댓글
첫 번째 댓글을 남겨보세요.