ssh security linux devops sysadmin

SSH 키 관리 및 보안 완벽 가이드

SSH 키 생성 및 관리를 마스터하세요. SSH 키 생성기, authorized_keys 및 known_hosts 형식, 서버 보안을 위한 베스트 프랙티스를 알아봅니다.

2026-04-12

SSH 키 관리 및 보안 완벽 가이드

SSH(Secure Shell)는 Linux 서버를 관리하기 위한 표준 프로토콜입니다. 비밀번호를 사용할 수도 있지만, SSH 키는 훨씬 더 안전하고 편리한 대안을 제공합니다. 하지만 생성부터 교체(rotation)까지 이러한 키를 올바르게 관리하는 것은 강력한 보안 상태를 유지하는 데 매우 중요합니다.

이 가이드에서는 기본 생성부터 고급 관리 전략까지 SSH 키에 대해 알아야 할 모든 것을 다룹니다.


1. 안전한 키 생성

SSH 보안의 첫 번째 단계는 올바른 알고리즘을 선택하고 강력한 키 쌍을 생성하는 것입니다.

온라인 SSH 키 생성기

온라인 SSH 키 생성기는 테스트나 키 쌍을 빠르게 만드는 데 편리하지만, 운영 환경용 키에는 웹 기반 도구를 절대로 사용해서는 안 됩니다. 개인 키가 네트워크를 통해 전송되지 않도록 항상 로컬 머신에서 생성하세요.

ssh-keygen 명령 빌더

키를 생성하는 표준 도구는 ssh-keygen입니다. ssh-keygen 명령 빌더를 사용하면 최적의 파라미터를 선택할 수 있습니다. 오늘날에는 오래된 RSA보다 Ed25519를 사용하는 것이 권장됩니다.

현대적이고 안전한 키를 위한 추천 명령:

ssh-keygen -t ed25519 -C "[email protected]"

이전 시스템과의 호환성을 위해 RSA를 사용해야 한다면 최소 4096비트인지 확인하세요.

ssh-keygen -t rsa -b 4096

2. 액세스 관리: authorized_keys 형식

일반적으로 ~/.ssh/에 위치한 authorized_keys 파일은 특정 사용자로 로그인할 수 있는 공개 키를 결정합니다.

authorized_keys 형식

authorized_keys 형식의 단일 항목은 세 부분으로 구성됩니다.

  1. 옵션 (선택 사항): 키의 기능을 제한합니다 (예: from="1.2.3.4", no-agent-forwarding).
  2. 키 유형: 알고리즘 (예: ssh-ed25519 또는 ssh-rsa).
  3. 공개 키 데이터: 실제 base64로 인코딩된 키.
  4. 주석 (선택 사항): 키를 식별하기 위한 레이블 (보통 이메일이나 호스트 이름).

제한 사항이 포함된 예시:

from="192.168.1.0/24" ssh-ed25519 AAAAC3Nza... [email protected]

3. 서버 검증: known_hosts 형식

authorized_keys가 클라이언트 인증용이라면, known_hosts 파일은 서버 인증용입니다. 이는 중간자(MITM) 공격으로부터 사용자를 보호합니다.

known_hosts 형식

known_hosts 형식은 서버의 호스트 이름 또는 IP 주소를 해당 공개 호스트 키에 매핑합니다. 서버에 처음 연결할 때 SSH는 호스트의 지문을 확인하도록 요청합니다. 수락하면 키가 ~/.ssh/known_hosts에 추가됩니다. 서버의 키가 변경되면 SSH는 경고를 표시하고 연결을 차단합니다.

항목 형식:

[hostname],[IP] ssh-ed25519 AAAAC3Nza...

4. SSH 보안을 위한 베스트 프랙티스

  • 암호(Passphrase) 사용: 항상 강력한 암호로 개인 키를 보호하세요. 키를 도난당하더라도 암호 없이는 무용지물입니다.
  • 비밀번호 인증 비활성화: SSH 키가 작동하면 /etc/ssh/sshd_config에서 PasswordAuthentication no를 설정하여 비밀번호 로그인을 비활성화하세요.
  • 정기적인 키 교체: 비밀번호와 마찬가지로 SSH 키도 정기적으로 변경해야 합니다. 특히 직원이 퇴사할 때 중요합니다.
  • SSH 에이전트 사용: ssh-agent를 사용하여 복호화된 키를 메모리에 저장하면 매번 암호를 입력할 필요 없이 연결할 수 있습니다.
  • 점프 서버(Bastion Host) 구현: 모든 서버를 공용 인터넷에 노출하는 대신, 단일화된 보안 입구를 사용하세요.

5. 요약

SSH 키 생성기를 마스터하고 authorized_keys 및 known_hosts 형식을 이해함으로써 인프라에 대한 무단 액세스 위험을 크게 줄일 수 있습니다. 비밀번호에서 키 기반 인증으로 전환하는 것은 모든 Linux 기반 환경을 보호하는 데 있어 가장 중요한 단계입니다.