SSH 키란?
SSH(Secure Shell) 키는 서버와 클라이언트 간의 보안 연결을 설정하는 암호화된 인증 방법입니다. 기존의 비밀번호 기반 인증보다 보안성이 뛰어나며, 자동화된 시스템 관리 및 원격 서버 접근 시 널리 사용됩니다. SSH 키는 공개 키(Public Key)와 개인 키(Private Key)로 구성됩니다.
SSH 키를 사용하는 이유
- 강력한 보안성: 비밀번호 기반 인증보다 해킹이 어려움
- 자동화된 접속: 스크립트나 배치 작업에서 암호 입력 없이 안전한 접속 가능
- 무차별 대입 공격(Brute Force) 방지: SSH 키를 이용하면 비밀번호 입력이 불필요하므로 공격에 노출될 가능성이 줄어듦
- 여러 시스템 관리 용이: 여러 개의 서버에 접속할 때 편리함
SSH 키 생성 방법
SSH 키를 생성하는 방법은 운영체제에 따라 약간의 차이가 있을 수 있으나, 대부분의 경우 기본적인 절차는 동일합니다. 이 가이드는 Linux, macOS, Windows 환경에서 SSH 키를 생성하는 방법을 설명합니다.
1. SSH 키 생성 명령 실행
SSH 키를 생성하기 위해 터미널을 열고 다음 명령어를 입력합니다.
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-t rsa
: RSA 알고리즘을 사용하여 키를 생성-b 4096
: 키 길이를 4096비트로 설정하여 보안 강화-C "your_email@example.com"
: 키의 주석(Comment)으로 이메일 주소를 지정하여 관리 용이
2. 키 저장 위치 설정
위 명령어를 실행하면 다음과 같은 메시지가 표시됩니다.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
기본적으로 ~/.ssh/id_rsa
에 저장되며, 원하는 위치를 입력하여 변경할 수 있습니다.
3. 패스프레이즈(비밀번호) 설정
Enter passphrase (empty for no passphrase):
패스프레이즈를 입력하면 추가적인 보안 계층이 추가됩니다. 보안 강화를 위해 입력하는 것을 권장합니다. 단, 자동화된 스크립트에서 사용할 경우 패스프레이즈 없이 생성할 수도 있습니다.
4. SSH 키 생성 완료
키 생성이 완료되면 다음과 같은 메시지가 표시됩니다.
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.com
이제 SSH 키가 생성되었으며, id_rsa
(개인 키)와 id_rsa.pub
(공개 키)가 해당 디렉터리에 저장됩니다.
SSH 키를 서버에 등록하는 방법
SSH 키를 사용하려면 서버에 공개 키를 등록해야 합니다.
1. 공개 키를 서버로 복사
아래 명령어를 사용하여 공개 키를 서버의 ~/.ssh/authorized_keys
파일에 추가합니다.
ssh-copy-id user@server_ip_address
위 명령어를 실행하면 비밀번호를 한 번 입력한 후 SSH 키가 자동으로 서버에 복사됩니다.
2. 수동으로 공개 키 복사
ssh-copy-id
명령어를 사용할 수 없는 경우, 수동으로 공개 키를 복사하여 등록할 수도 있습니다.
cat ~/.ssh/id_rsa.pub | ssh user@server_ip_address "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
이제 SSH 키를 사용하여 비밀번호 없이 서버에 접속할 수 있습니다.
ssh user@server_ip_address
SSH 키 관리 및 보안 팁
1. 기존 SSH 키 확인
기존에 생성된 SSH 키가 있는지 확인하려면 다음 명령어를 실행합니다.
ls -al ~/.ssh
2. SSH 에이전트(SSH Agent) 사용
SSH 키를 여러 개 사용할 경우, SSH 에이전트를 이용하여 관리할 수 있습니다.
ssh-agent bash
ssh-add ~/.ssh/id_rsa
3. SSH 포트 변경 및 보안 강화
/etc/ssh/sshd_config
파일을 수정하여 기본 포트(22번) 변경 및 보안을 강화할 수 있습니다.
sudo nano /etc/ssh/sshd_config
변경할 설정 예시:
Port 2222
PermitRootLogin no
PasswordAuthentication no
설정 변경 후 SSH 서비스를 재시작해야 합니다.
sudo systemctl restart ssh
4. 개인 키 백업 및 관리
개인 키는 매우 중요한 보안 요소이므로 적절한 백업 및 관리가 필요합니다.
- 클라우드에 저장 금지: 개인 키를 Google Drive, Dropbox와 같은 클라우드 스토리지에 저장하지 않기
- 하드웨어 보안 모듈(HSM) 또는 보안 USB 사용: 개인 키를 보호하기 위한 추가적인 방법 고려
- 정기적인 키 변경: 주기적으로 SSH 키를 갱신하여 보안 강화
결론
SSH 키를 생성하고 관리하는 것은 서버 보안을 강화하는 중요한 과정입니다. 비밀번호보다 더 안전한 인증 방식을 제공하며, 자동화 및 원격 접속을 보다 안전하게 수행할 수 있습니다. 이 가이드를 따라 SSH 키를 생성하고 올바르게 설정하면 보안성이 크게 향상됩니다.
주요 요약
항목 | 설명 |
---|---|
SSH 키 구성 요소 | 공개 키(Public Key), 개인 키(Private Key) |
SSH 키 생성 명령어 | ssh-keygen -t rsa -b 4096 -C "your_email@example.com" |
키 저장 위치 | 기본적으로 ~/.ssh/id_rsa 및 ~/.ssh/id_rsa.pub |
공개 키 서버 등록 | ssh-copy-id user@server_ip_address 또는 수동 복사 |
보안 강화 팁 | SSH 포트 변경, 패스프레이즈 사용, 정기적인 키 갱신 |
이제 SSH 키를 올바르게 생성하고 활용하여 서버 보안을 강화하세요!
🚀 1. SSH 키 알고리즘 종류 (-t
옵션)
SSH 키를 생성할 때 사용할 수 있는 주요 알고리즘은 다음과 같습니다.
알고리즘 | 설명 | 보안성 | 사용 추천 여부 |
---|---|---|---|
RSA | 가장 널리 사용되는 알고리즘 | 🔵 강력함 (4096 비트 이상) |
✅ 추천 |
ECDSA | 타원 곡선 암호화, 빠름 | 🟢 보안성 적절 | ⚠️ 사용 가능하지만 RSA가 더 추천됨 |
ED25519 | 최신 암호화 방식, 보안 강력 | 🔵 매우 강력함 | ✅ 강력 추천 |
DSA | 과거 사용되던 알고리즘 (취약) | 🔴 보안 취약 (1024비트 제한 ) |
❌ 사용 비추천 |
🔑 2. SSH 키 생성 명령어 예시
✅ 1️⃣ RSA (가장 널리 사용)
ssh-keygen -t rsa -b 4096 -C "your-email@example.com"
-t rsa
→ RSA 알고리즘 사용-b 4096
→ 키 길이를 4096비트로 설정 (2048 비트보다 강력)- 가장 널리 사용되며, 강력한 보안을 제공
- GitHub, AWS, 서버 인증에 추천
✅ 2️⃣ ED25519 (최신, 보안 강력)
ssh-keygen -t ed25519 -C "your-email@example.com"
-t ed25519
→ 최신 타원 곡선 알고리즘 (Curve25519 사용)- RSA보다 더 짧은 키로도 높은 보안성 제공
- 비트 크기 지정 (
-b
) 필요 없음 - 빠르고 강력한 보안 제공 (추천)
- GitHub, 최신 시스템에서 사용 가능
✅ 3️⃣ ECDSA (빠르지만 RSA보다 덜 안정적)
ssh-keygen -t ecdsa -b 521 -C "your-email@example.com"
-t ecdsa
→ 타원 곡선 디지털 서명 알고리즘 사용-b 521
→ 256, 384, 521 비트 가능- RSA보다 빠르지만 보안성에서 ED25519보다 떨어짐
- 특정 시스템에서 요구할 때만 사용 (일반적으론 RSA 또는 ED25519 추천)
❌ 4️⃣ DSA (사용 비추천)
ssh-keygen -t dsa -b 1024 -C "your-email@example.com"
- DSA는 1024비트 제한으로 인해 보안이 취약하여 사용 비추천
- 현재 OpenSSH 기본 지원 중단됨
⚡ 3. 어떤 알고리즘을 선택해야 할까?
✅ 권장 순위:
- ED25519 (최신 & 강력한 보안, 빠름)
- RSA 4096 (보편적으로 사용됨, 호환성 높음)
- ECDSA (빠름, 하지만 보안성이 ED25519보다 낮음)
- DSA (❌ 사용 비추천)
📌 GitHub, AWS, Linux 서버에서는 ED25519
또는 RSA 4096
을 사용하는 것이 가장 좋습니다.
🎯 결론
알고리즘 | 명령어 | 특징 | 추천 여부 |
---|---|---|---|
RSA (4096비트) | ssh-keygen -t rsa -b 4096 -C "email" |
보편적으로 사용, 강력한 보안 | ✅ 추천 |
ED25519 | ssh-keygen -t ed25519 -C "email" |
최신, 보안 강력, 빠름 | ✅ 강력 추천 |
ECDSA (521비트) | ssh-keygen -t ecdsa -b 521 -C "email" |
빠르지만 보안성 RSA보다 낮음 | ⚠️ 일부 환경에서만 추천 |
DSA (1024비트) | ssh-keygen -t dsa -b 1024 -C "email" |
보안 취약 (사용 지양) | ❌ 비추천 |
📌 가장 추천하는 알고리즘은 ED25519
또는 RSA 4096
입니다. 🚀