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 키 인증 흐름 요약
- 클라이언트에서 id_rsa(비공개 키), id_rsa.pub(공개 키) 생성
- 공개 키를 서버의 ~/.ssh/authorized_keys에 등록
- 클라이언트가 비공개 키를 이용해 서버에 접속
- 서버가 공개 키와 대조해 인증 성공 시 접속 허용
실전 사용 예시
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 형식의 안전한 키를 생성하고, 비밀번호 없이 간편하게 인증하는 환경을 구성할 때 유용합니다.
감사합니다.