SSH Key 가이드 - SSH 키 생성 및 관리 완벽 가이드
SSH(Secure Shell) 키는 서버에 안전하게 접속하기 위한 암호화 기반 인증 방식입니다. 비밀번호 대신 공개키/개인키 쌍을 사용하여 로그인하면 브루트포스 공격에 대한 방어력이 크게 향상되며, 매번 비밀번호를 입력하지 않아도 되어 편리합니다. 이 도구는 개발자와 서버 관리자가 SSH 키를 생성하고 관리하는 전 과정을 단계별로 안내합니다.
SSH 키 인증은 공개키 암호화 방식에 기반합니다. 개인키(Private Key)는 로컬 컴퓨터에 안전하게 보관하고, 공개키(Public Key)는 접속하려는 서버의 authorized_keys 파일에 등록합니다. 접속 시 서버는 공개키로 챌린지를 암호화하고, 클라이언트가 개인키로 이를 복호화하여 신원을 증명하는 방식으로 인증이 이루어집니다.
현재 가장 권장되는 키 알고리즘은 Ed25519입니다. Ed25519는 Curve25519 타원곡선을 기반으로 하며, RSA보다 키 크기가 작으면서도 동등하거나 더 높은 보안 수준을 제공합니다. 키 생성과 서명 속도도 RSA에 비해 월등히 빠릅니다. 다만, 구형 시스템이나 일부 레거시 장비에서는 Ed25519를 지원하지 않을 수 있으므로, 이 경우 RSA 4096비트를 사용하는 것이 좋습니다.
SSH config 파일(~/.ssh/config)을 활용하면 여러 서버에 대한 접속 정보를 미리 설정해둘 수 있습니다. 호스트 별칭, 사용자명, 포트 번호, 사용할 키 파일 등을 지정하면 간단한 명령어 하나로 원하는 서버에 접속할 수 있습니다. 이는 특히 여러 서버를 관리하는 DevOps 엔지니어나 다수의 Git 리포지토리를 다루는 개발자에게 필수적입니다.
키 파일의 권한 설정도 매우 중요합니다. 개인키 파일은 반드시 소유자만 읽을 수 있도록 600(또는 400) 권한을 설정해야 하며, .ssh 디렉토리는 700 권한이어야 합니다. 권한이 잘못 설정되어 있으면 SSH 클라이언트가 키 사용을 거부합니다. 이 도구에서 생성하는 명령어에는 올바른 권한 설정 명령이 포함되어 있으므로 안심하고 사용할 수 있습니다.
ssh-agent를 활용하면 세션 동안 개인키의 패스프레이즈를 캐싱하여, 한 번 입력한 후에는 반복 입력 없이 여러 서버에 접속할 수 있습니다. GitHub, GitLab 등의 Git 호스팅 서비스에 SSH 키를 등록하면 HTTPS 대신 SSH 프로토콜로 리포지토리를 클론하고 푸시할 수 있어, 토큰 관리의 번거로움을 줄일 수 있습니다.
키 타입별 비교
- Ed25519: 가장 권장되는 최신 알고리즘. 작은 키 크기(256비트)로 높은 보안성과 빠른 성능을 제공합니다.
- RSA: 가장 널리 사용되는 알고리즘. 최소 2048비트, 권장 4096비트. 거의 모든 시스템에서 지원됩니다.
- ECDSA: 타원곡선 기반 알고리즘. Ed25519를 지원하지 않는 환경에서의 대안입니다.
- DSA: 레거시 알고리즘으로 OpenSSH 7.0부터 기본 비활성화되었습니다. 새 키 생성에는 사용하지 마세요.
자주 묻는 질문 (FAQ)
Q. Ed25519와 RSA 중 어떤 것을 선택해야 하나요?
A. 특별한 호환성 요구사항이 없다면 Ed25519를 권장합니다. Ed25519는 RSA 4096비트와 동등한 보안 수준을 256비트 키로 달성하며, 키 생성과 인증 속도가 훨씬 빠릅니다. 구형 서버나 임베디드 장비 등 Ed25519를 지원하지 않는 환경에서만 RSA 4096비트를 사용하세요.
Q. SSH 키에 패스프레이즈를 설정해야 하나요?
A. 보안을 위해 패스프레이즈 설정을 강력히 권장합니다. 패스프레이즈는 개인키 파일이 유출되었을 때 추가 보호층 역할을 합니다. ssh-agent를 사용하면 패스프레이즈를 세션당 한 번만 입력하면 되므로 불편함이 최소화됩니다.
Q. authorized_keys 파일에 여러 공개키를 등록할 수 있나요?
A. 네, authorized_keys 파일에는 한 줄에 하나씩 여러 공개키를 등록할 수 있습니다. 이를 통해 여러 컴퓨터에서 같은 서버에 접속하거나, 여러 사용자가 같은 계정에 접속할 수 있습니다.
Q. SSH 키를 분실하거나 유출되면 어떻게 하나요?
A. 즉시 해당 공개키를 모든 서버의 authorized_keys 파일에서 제거하고, 새로운 키 쌍을 생성하여 다시 등록해야 합니다. 패스프레이즈가 설정되어 있었다면 공격자가 키를 사용하기 어렵지만, 예방 차원에서 키를 교체하는 것이 안전합니다.
Q. GitHub/GitLab에 SSH 키를 등록하려면?
A. 공개키(.pub 파일)의 내용을 복사하여 해당 서비스의 Settings > SSH Keys 메뉴에 붙여넣기 하면 됩니다. 이 도구의 Step 3에서 공개키를 확인하는 명령어를 제공합니다. ssh -T git@github.com 명령으로 연결을 테스트할 수 있습니다.
Q. Windows에서도 SSH 키를 사용할 수 있나요?
A. Windows 10 이상에서는 OpenSSH가 기본 내장되어 있어 PowerShell이나 명령 프롬프트에서 동일한 ssh-keygen 명령어를 사용할 수 있습니다. 또는 Git Bash, WSL(Windows Subsystem for Linux)을 통해서도 사용할 수 있습니다.