SSH 키 생성 가이드

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. 어떤 알고리즘을 선택해야 할까?

권장 순위:

  1. ED25519 (최신 & 강력한 보안, 빠름)
  2. RSA 4096 (보편적으로 사용됨, 호환성 높음)
  3. ECDSA (빠름, 하지만 보안성이 ED25519보다 낮음)
  4. 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 입니다. 🚀

Leave a Comment