SSH 키 생성기
브라우저에서 안전하게 SSH 키 쌍을 생성합니다. 서버 전송 없이 100% 로컬에서 처리됩니다.
이 키는 브라우저에서 생성되며 서버로 전송되지 않습니다. 페이지를 떠나면 키는 삭제됩니다.
SSH 키 생성기 -- 브라우저에서 안전하게 키 쌍 만들기
SSH(Secure Shell) 키는 비밀번호 없이 서버에 안전하게 접속하기 위한 공개키/개인키 암호화 인증 방식입니다. 이 도구는 Web Crypto API를 사용하여 RSA 2048/4096비트 키 쌍을 100% 브라우저 로컬에서 생성합니다. 키는 서버로 전송되지 않으며, 페이지를 떠나면 메모리에서 자동 삭제됩니다.
RSA 4096 vs. Ed25519 -- 알고리즘 비교
| 항목 | RSA 4096 | Ed25519 |
|---|---|---|
| 키 길이 | 4096비트 (512바이트) | 256비트 (32바이트) |
| 보안 강도 | 약 140비트 보안 | 약 128비트 보안 |
| 생성 속도 | 느림 (수 초) | 빠름 (밀리초) |
| 서명/검증 속도 | 보통 | 매우 빠름 |
| 호환성 | 거의 모든 시스템 | OpenSSH 6.5+ |
| 권장 용도 | 레거시 호환 필요 시 | 신규 배포(권장) |
2026년 현재 NIST와 OpenSSH 프로젝트 모두 Ed25519를 기본 권장합니다. 그러나 이 도구는 Web Crypto API 제약으로 RSA만 지원하며, Ed25519가 필요한 경우 터미널에서 ssh-keygen -t ed25519를 사용하세요.
SSH 키 인증 흐름
SSH 키 인증은 다음 과정으로 이루어집니다.
- 클라이언트가 공개키를 서버의
~/.ssh/authorized_keys에 등록 - 접속 시 서버가 랜덤 챌린지(challenge)를 클라이언트에 전송
- 클라이언트가 개인키로 챌린지에 서명하여 응답
- 서버가 공개키로 서명을 검증하여 인증 완료
핵심 파일과 권한 설정
| 파일 | 위치 | 권한(chmod) | 설명 |
|---|---|---|---|
| 개인키 | ~/.ssh/id_rsa | 600 | 절대 외부 공유 금지 |
| 공개키 | ~/.ssh/id_rsa.pub | 644 | 서버에 등록할 키 |
| 인증 키 목록 | ~/.ssh/authorized_keys | 600 | 허용된 공개키 목록 |
| 알려진 호스트 | ~/.ssh/known_hosts | 644 | 신뢰된 서버 지문 |
| SSH 디렉토리 | ~/.ssh/ | 700 | 디렉토리 자체 보호 |
ssh-agent -- 패스프레이즈 관리
개인키에 패스프레이즈를 설정하면 키 파일이 유출되어도 추가 보안 계층이 작동합니다. ssh-agent를 실행한 뒤 ssh-add ~/.ssh/id_rsa로 키를 등록하면, 세션 동안 패스프레이즈를 다시 입력하지 않아도 됩니다. macOS는 키체인(Keychain)과 통합되어 재부팅 후에도 자동으로 키가 로드됩니다.
보안 권장사항
- 패스프레이즈 필수: 개인키에 반드시 강력한 패스프레이즈를 설정하세요.
- 키 분리: GitHub용, 서버 배포용, 개인용 등 용도별로 별도 키 쌍을 사용하세요.
- 비밀번호 인증 비활성화: SSH 키 등록 후
/etc/ssh/sshd_config에서PasswordAuthentication no를 설정하세요. - 주기적 키 로테이션: 12~24개월마다 키를 교체하는 것이 모범 사례입니다.
- 포트 변경: 기본 포트(22)를 다른 번호로 변경하면 자동 스캔 공격을 줄일 수 있습니다.
실전 활용 시나리오
- GitHub/GitLab: 저장소 클론 및 푸시를 위한 Deploy Key 등록
- CI/CD 파이프라인: GitHub Actions, Jenkins에서 서버 배포 자동화
- 원격 서버 관리: AWS EC2, GCP Compute Engine 접속
- Git 서명: SSH 키로 커밋 서명(Git 2.34+)
관련 도구
키 파일 권한 설정은 chmod 계산기를, 서버 자동화 스케줄링은 Cron 표현식 생성기를, 토큰 기반 인증은 JWT 디코더를 활용하세요.
참고 자료
- OpenSSH -- 공식 문서 (openssh.com)
- NIST SP 800-57 -- "Recommendation for Key Management"
- GitHub Docs -- "Connecting to GitHub with SSH"
- OWASP -- SSH Hardening Cheat Sheet