Infra/OS

ssh

TrendPilot 2025. 4. 9. 09:44

SSH key
원격 서버에 안전하게 접속하거나, Git과 같은 저장소에서 인증을 수행할 때 흔히 사용되는 것이 SSH 키 인증입니다.

이 글에서는 SSH 키가 무엇인지, 그리고 ssh-keygen -t rsa -m pem 명령어로 생성되는 키 파일들에 대해 알아보겠습니다.


SSH 키란?

SSH(Secure Shell)는 네트워크를 통해 다른 컴퓨터에 안전하게 접속하기 위한 프로토콜입니다.
SSH 접속 방식에는 두 가지가 있습니다:

  • 비밀번호 방식 (매번 입력해야 함)
  • 공개키 기반 인증 방식 (자동화 가능, 보안성 우수)

공개키 기반 인증은 다음과 같은 두 개의 키를 사용합니다:

  • 공개 키 (Public Key): 누구에게나 공유해도 되는 키
  • 비공개 키 (Private Key): 절대 유출되어서는 안 되는 키

이 키 쌍은 수학적으로 연결되어 있어, 공개 키로는 복호화할 수 없는 데이터를 비공개 키로만 복호화할 수 있습니다.
서버는 클라이언트의 공개 키를 가지고 있고, 클라이언트는 비공개 키를 가지고 있으면 인증이 성립됩니다.


SSH 키 생성 명령어

ssh-keygen -t rsa -m pem

ssh-keygen -t rsa -m pem

 

이 명령어는 PEM 형식의 RSA 키 쌍을 생성합니다.

옵션설명
-t rsa RSA 알고리즘을 사용해 키 생성
-m pem 키 파일 형식을 PEM(Privacy Enhanced Mail) 형식으로 저장

PEM 형식은 다양한 외부 시스템들과의 호환성을 위해 사용되며, 파일은 다음과 같은 헤더로 시작합니다:

-----BEGIN RSA PRIVATE KEY-----

생성되는 파일 설명

SSH 키를 생성하면 기본적으로 ~/.ssh/ 디렉토리에 다음 세 개의 파일이 생성됩니다:

1. id_rsa – 비공개 키 (Private Key)

  • 서버에 접속할 때 사용되는 개인 키
  • 절대 외부에 유출되면 안 됨
  • PEM 형식으로 저장됨
  • 예시:
 
-----BEGIN RSA PRIVATE KEY-----

2. id_rsa.pub – 공개 키 (Public Key)

  • 서버에 복사해서 인증에 사용되는 키
  • 누구나 봐도 무방
  • 서버의 authorized_keys에 등록되어야 사용 가능

authorized_keys – 서버의 인증 키 목록

  • 서버 측에 존재
  • 접속을 허용할 공개 키들을 저장
  • 위치: ~/.ssh/authorized_keys
  • 공개 키를 이 파일에 추가해야 접속 가능
 
cat id_rsa.pub >> ~/.ssh/authorized_keys

SSH 키 인증 흐름 요약

  1. 클라이언트에서 id_rsa(비공개 키), id_rsa.pub(공개 키) 생성
  2. 공개 키를 서버의 ~/.ssh/authorized_keys에 등록
  3. 클라이언트가 비공개 키를 이용해 서버에 접속
  4. 서버가 공개 키와 대조해 인증 성공 시 접속 허용

실전 사용 예시

1. 키 생성

 
ssh-keygen -t rsa -m pem

2. 공개 키 서버에 복사

ssh-copy-id user@your-server-ip
# 또는 수동 복사
cat ~/.ssh/id_rsa.pub | ssh user@your-server-ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

3. 서버 접속

ssh user@your-server-ip

비밀번호 입력 없이 바로 접속된다면 성공입니다.


마무리

SSH 키는 서버 관리, Git 인증, CI/CD 자동화 등에서 꼭 필요한 기술입니다.
ssh-keygen -t rsa -m pem 명령어를 통해 PEM 형식의 안전한 키를 생성하고, 비밀번호 없이 간편하게 인증하는 환경을 구성할 때 유용합니다.

 

감사합니다.