728x90
반응형

RSA 키 인증이 뭐야?
RSA(Rivest–Shamir–Adleman)는 공개키 암호 방식 중 하나로,
공개키와 개인키 두 개의 키를 만들어서
서버는 공개키만 알고, 클라이언트는 개인키를 갖고 있는 구조다.
→ 중요한 건 비밀번호 없이도 안전하게 접속 가능하다는 거다.
RSA 키 인증 개념, 조금 더 깊이 들어가기
RSA는 비대칭 암호화 알고리즘이다.
공개키 (Public Key): 누구에게나 공유 가능. 서버에 저장.
개인키 (Private Key): 절대 유출되면 안 됨. 클라이언트에만 저장.
인증 과정 간략 흐름:
- i. 클라이언트가 접속 요청
- ii. 서버는 클라이언트 공개키와 매칭되는 challenge(난수)를 전달
- iii. 클라이언트는 개인키로 challenge 서명 → 서버에 전송
- iv. 서버는 등록된 공개키로 서명 검증
- v. 서명이 유효하면 로그인 허용
여기서 핵심:
✔️ 비밀번호 전송이 아예 발생하지 않는다 → 네트워크 패킷으로 탈취 불가
✔️ 개인키는 로컬 파일로만 존재하며, 패스프레이즈(Passphrase)로 암호화 가능
macOS에서 SSH RSA 키 생성 (보안 옵션까지 포함)
ssh-keygen -t rsa -b 4096 -C "mac-ubuntu-secure"
-b 4096: 키 길이를 4096bit로 설정 (기본 2048보다 훨씬 안전)-C: 식별용 주석 (GitHub 등과 연동 시 용이)
Enter file in which to save the key: ./ubuntu_secure_key
Enter passphrase (empty for no passphrase): ******
passphrase는 개인키 자체를 암호화하기 위한 비밀번호. 유출되더라도 passphrase 없으면 무용지물.
생성 결과:
- ✔️
ubuntu_secure_key: 개인키 (절대 공개 금지) - ✔️
ubuntu_secure_key.pub: 공개키 (서버에 복사)
팁: Git 등의 소스코드 저장소에 개인키 파일은 절대 커밋하지 말자.
공개키 등록 및 서버 측 SSH 보안 설정
방법 1: ssh-copy-id (간편 자동화)
ssh-copy-id -i ./ubuntu_secure_key.pub ubuntu@서버_IP
→ SSH가 자동으로 ~/.ssh/authorized_keys에 붙여줌.
방법 2: 수동 등록
scp ./ubuntu_secure_key.pub ubuntu@서버_IP:/tmp/key.pub
ssh ubuntu@서버_IP
mkdir -p ~/.ssh
cat /tmp/key.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
rm /tmp/key.pub
권한 설정 체크 (보안 필수)
| 경로 | 권한 |
|---|---|
~/.ssh/ |
700 |
~/.ssh/authorized_keys |
600 |
이 설정이 맞지 않으면 SSH가 공개키를 무시함.
/etc/ssh/sshd_config 보안 Harden 설정
sudo vi /etc/ssh/sshd_config
아래 옵션들을 꼭 확인하거나 수정하자:
# 공개키 인증 활성화
PubkeyAuthentication yes
# 비밀번호 로그인 차단
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
# 루트 계정 접근 제한
PermitRootLogin no
# 오래된 프로토콜 비활성화
Protocol 2
변경 후 SSH 재시작:
sudo systemctl restart ssh
보안 관점 체크리스트
| 항목 | 설명 | 권장 여부 |
|---|---|---|
| 개인키에 Passphrase 설정 | 키 유출 시 추가 방어선 | ✅ 필수 |
PasswordAuthentication |
비활성화 브루트포스 방어 | ✅ 필수 |
루트 로그인 차단 (PermitRootLogin no) |
권한 탈취 차단 | ✅ 필수 |
| 특정 IP만 허용 (방화벽 설정) | 접근 대상 제한 | ✅ 강력 권장 |
| Fail2Ban 설치 | 로그인 실패 횟수 제한 | ✅ 보완 가능 |
| 키 교체 주기 | 장기 사용 피하기 | ⚠️ 6~12개월마다 권장 |
마무리
SSH 키 인증은 단순히 "암호 없이 로그인하는 방법"이 아니라,
보다 안전하고 통제 가능한 접근 방식을 구축하는 출발점이다.
운영 중에는 키 주기적 점검과 정책 기반 관리까지 고려해보는 것이 좋다.
특히 팀 개발/운영 환경에서는 공개키 등록/삭제 자동화를 포함한 CI/CD 보안 정책에 통합하는 것을 추천한다.
이제 SSH 키 인증은 단순한 보안 기능이 아닌,
서비스 운영 신뢰성을 위한 핵심 구성요소라는 관점에서 접근하는 것이 필요하다.
728x90
반응형
'linux' 카테고리의 다른 글
| [Linux sudo 설정] 비밀번호 없이 sudo 사용 및 기타 유용한 Defaults 설정 (2) | 2025.07.24 |
|---|---|
| [리눅스 패키지 관리] apt? apt-get? (0) | 2025.05.29 |
| [리눅스 inode] ln 명령어 하드링크 vs 심볼릭링크 (0) | 2025.05.29 |
| [리눅스 디스크 관리] linux disk 파티션, mount (1) | 2025.05.28 |
| [리눅스 프로세스 관리] ps와 kill 명령어 + 시그널까지 한 번에 정리하기 (0) | 2025.05.28 |