Linux SSH 키 생성하기 - ssh-keygen 완벽 가이드
Linux SSH 키 생성하기 - ssh-keygen 완벽 가이드
🎯 Summary
즉시 사용 가능한 SSH 키 생성 명령어:
# RSA 키 생성 (가장 일반적)
ssh-keygen -t rsa
# 더 안전한 ED25519 키 생성 (권장)
ssh-keygen -t ed25519
# 키 크기 지정 (RSA의 경우)
ssh-keygen -t rsa -b 4096
기본 사용법:
ssh-keygen -t rsa
실행- 저장 경로 묻기 → 엔터 (기본 경로 사용)
- 패스워드 묻기 → 엔터 (비밀번호 없이 사용)
- 패스워드 재확인 → 엔터
생성된 키 확인:
# 공개키 내용 확인
cat ~/.ssh/id_rsa.pub
# 생성된 키 파일 목록
ls -la ~/.ssh/
📚 상세 설명
배경 및 필요성
SSH 키는 비밀번호 없이 안전하게 원격 서버에 접속하기 위한 인증 방식입니다. 특히 Git, AWS EC2, VPS 서버 접속 시 필수적으로 사용되며, 비밀번호보다 훨씬 안전하고 편리한 인증 방법을 제공합니다.
ssh-keygen 명령어 옵션 상세
키 타입 옵션 (-t)
# RSA (가장 호환성 좋음)
ssh-keygen -t rsa
# ED25519 (더 안전하고 빠름, 최신 권장)
ssh-keygen -t ed25519
# ECDSA (타원곡선 암호화)
ssh-keygen -t ecdsa
# DSA (구식, 권장하지 않음)
ssh-keygen -t dsa
키 크기 지정 (-b)
# RSA 4096비트 (더 안전)
ssh-keygen -t rsa -b 4096
# RSA 2048비트 (기본값)
ssh-keygen -t rsa -b 2048
파일명과 경로 지정 (-f)
# 특정 파일명으로 생성
ssh-keygen -t rsa -f ~/.ssh/my_server_key
# 현재 디렉토리에 생성
ssh-keygen -t rsa -f ./my_key
코멘트 추가 (-C)
# 이메일 주소나 설명 추가
ssh-keygen -t rsa -C "your_email@example.com"
ssh-keygen -t rsa -C "aws-ec2-production"
실제 생성 과정 단계별 설명
1단계: 명령어 실행
ubuntu@server:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
2단계: 저장 위치 선택
Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa):
- 엔터: 기본 경로 사용 (
~/.ssh/id_rsa
) - 다른 경로: 원하는 파일명 입력
3단계: 패스워드 설정
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
- 엔터 두 번: 패스워드 없이 사용
- 패스워드 입력: 추가 보안 레이어 (매번 입력 필요)
4단계: 생성 완료
Your identification has been saved in /home/ubuntu/.ssh/id_rsa
Your public key has been saved in /home/ubuntu/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:8MBHCzkCy/2X2CQCTeP2p9r2gUOAZokCtrCANw5DaAk ubuntu@ip-172-31-35-113
The key's randomart image is:
+---[RSA 3072]----+
|Eo++o ... |
|X*+Boooo . |
|=*B.*.=.+ |
|.o.. = X . |
| = S |
| . = |
| + . |
| o.. . |
| ..... |
+----[SHA256]-----+
생성된 파일 구조
~/.ssh/
├── id_rsa # 개인키 (절대 공유하면 안됨)
├── id_rsa.pub # 공개키 (서버에 등록하는 키)
├── known_hosts # 접속한 서버 정보
└── authorized_keys # 허용된 공개키 목록
실제 활용 사례
GitHub/GitLab 연동
# 1. SSH 키 생성
ssh-keygen -t ed25519 -C "your_email@example.com"
# 2. 공개키 복사
cat ~/.ssh/id_ed25519.pub
# 3. GitHub Settings > SSH Keys에 추가
# 4. 연결 테스트
ssh -T git@github.com
AWS EC2 인스턴스 접속
# 1. 키 생성 (EC2용 별도 키)
ssh-keygen -t rsa -f ~/.ssh/aws_ec2_key
# 2. 공개키를 EC2 인스턴스에 등록
# 3. 접속
ssh -i ~/.ssh/aws_ec2_key ubuntu@your-ec2-ip
여러 서버 관리를 위한 SSH Config
# ~/.ssh/config 파일 생성
Host production
HostName 192.168.1.100
User ubuntu
IdentityFile ~/.ssh/production_key
Host development
HostName 192.168.1.200
User dev
IdentityFile ~/.ssh/dev_key
# 사용법
ssh production
ssh development
보안 관련 주의사항
파일 권한 설정
# 개인키 권한 (소유자만 읽기 가능)
chmod 600 ~/.ssh/id_rsa
# 공개키 권한
chmod 644 ~/.ssh/id_rsa.pub
# .ssh 디렉토리 권한
chmod 700 ~/.ssh
패스워드 사용 여부
# 패스워드 없이 (편의성 우선)
ssh-keygen -t rsa
# 패스워드 있이 (보안 우선)
ssh-keygen -t rsa
# 패스워드 입력 후 사용시마다 입력 필요
에러 해결 및 트러블슈팅
권한 관련 에러
# 에러: WARNING: UNPROTECTED PRIVATE KEY FILE!
chmod 600 ~/.ssh/id_rsa
# 에러: Permission denied (publickey)
# 1. 공개키가 서버에 제대로 등록되었는지 확인
# 2. SSH 에이전트 확인
ssh-add -l
ssh-add ~/.ssh/id_rsa
기존 키 백업 및 새로 생성
# 기존 키 백업
cp ~/.ssh/id_rsa ~/.ssh/id_rsa.backup
cp ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.backup
# 새 키 생성 (기존 키 덮어쓰기)
ssh-keygen -t rsa -f ~/.ssh/id_rsa
고급 사용법
한 번에 여러 설정으로 키 생성
# 패스워드 없이, 4096비트, 코멘트 포함
ssh-keygen -t rsa -b 4096 -C "production-server" -f ~/.ssh/prod_key -N ""
SSH 에이전트 활용
# SSH 에이전트 시작
eval "$(ssh-agent -s)"
# 키 추가 (패스워드 한 번만 입력)
ssh-add ~/.ssh/id_rsa
# 등록된 키 확인
ssh-add -l
결론
SSH 키 생성은 ssh-keygen -t rsa
명령어 하나로 간단히 할 수 있지만, 보안과 편의성을 고려하여 적절한 옵션을 선택하는 것이 중요합니다. 특히 최신 환경에서는 ED25519 키 타입 사용을 권장하며, 여러 서버를 관리할 때는 SSH Config 파일을 활용하여 효율적으로 관리할 수 있습니다.
다음 단계로는 생성한 SSH 키를 실제 서버나 Git 서비스에 등록하여 비밀번호 없는 안전한 인증 환경을 구축해보세요.