간단하게 살펴보는 SSH 키
SSH 키의 정의와 생성 방법
2025년 5월 8일
조회 11
SSH 키는 컴퓨터 간에 안전하게 통신하기 위한 암호화된 인증 방식이다. 특히 서버에 원격으로 접속할 때 비밀번호 대신 사용할 수 있어 보안성과 편의성이 뛰어나다. SSH(Secure Shell)는 네트워크를 통해 다른 컴퓨터에 안전하게 접속하고 명령어를 실행할 수 있게 해주는 프로토콜이며, 이때 사용하는 인증 방식 중 하나가 SSH 키 기반 인증이다.
SSH 키의 구조
SSH 키는 쌍(Pair) 으로 이루어져 있다.
- 공개 키(Public Key): 누구에게나 공개해도 무방한 키로, 접속하고자 하는 서버에 저장한다.
- 개인 키(Private Key): 절대로 외부에 공개해서는 안 되는 키로, 접속하는 클라이언트(본인 컴퓨터)에만 보관한다.
이 두 키는 서로 짝을 이루며, 한쪽으로 암호화한 데이터는 반드시 반대쪽 키로만 복호화할 수 있다. 이를 비대칭 키 암호화라고 한다.
SSH 키 인증 방식의 작동 원리
- 사용자는 먼저 SSH 키 쌍을 생성합니다 (
ssh-keygen명령어 등 사용). - 생성된 공개 키를 서버의
~/.ssh/authorized_keys파일에 등록한다. - 클라이언트(사용자 컴퓨터)는 개인 키를 보관한다.
- 접속 시, 서버는 해당 공개 키에 해당하는 개인 키를 가지고 있는지를 확인하기 위해 암호화된 메시지를 보낸다.
- 클라이언트는 개인 키로 이를 복호화해서 인증을 통과한다.
이 과정에서 비밀번호는 사용되지 않으며, 키 파일 자체가 신분증 역할을 한다.
SSH 키의 장점
- 보안 강화: 비밀번호를 탈취당하거나 추측당할 위험이 줄어든다.
- 자동화 가능: 스크립트나 배치 작업에서 사용자 개입 없이 인증할 수 있어 자동화에 유리히다.
- 편리성: 한 번 설정해 두면, 서버 접속 시 매번 비밀번호를 입력할 필요가 없다.
- 다중 서버 관리에 유용: 동일한 공개 키를 여러 서버에 등록해두면, 하나의 개인 키로 여러 서버에 접근할 수 있다.
SSH 키 생성
SSH 키를 생성하는데에는 2가지 방법이 있다.
하지만 회사같은 곳에서는 세부적인 사항을 설정하는 경우가 많기에 수동을 추천한다.
| 방법 | 특징 | 추천 상황 |
|---|---|---|
| 1. gcloud CLI로 자동 생성 | 가장 간편함. 명령어 한 줄로 생성 및 등록 | 초보자 빠른 실습용 |
| 2. 수동(로컬)로 ssh-keygen 사용 | 키 파일 직접 제어 가능. 커스터마이징 자유 | 보안 요구 높은 환경 사내 서버 연동 |
🔵 방법 1: gcloud compute ssh로 자동 생성
✅ 과정
- gcloud 명령어로 VM 접속을 시도한다.
gcloud compute ssh [VM_NAME] --zone=[ZONE]
-
만약 연결할 때 등록된 SSH 키가 없다면, gcloud가 로컬에 새 키를 생성하고,
GCP VM에 자동으로 퍼블릭 키를 등록해준다.
-
키 파일은 보통 다음 경로에 저장된다:
~/.ssh/google_compute_engine
~/.ssh/google_compute_engine.pub
(비밀번호 없이 접속 가능)
✅ 장점
- 명령어 한 줄로 끝 (자동 생성 + 자동 등록)
- VM 인스턴스 메타데이터에 자동으로 퍼블릭 키 추가
- 키 만료 설정도 자동 지원 (30일 기본)
✅ 단점
- 키 이름이나 경로 커스터마이징이 어려움
- 키 관리 정책(복수 키 발급, 강제 갱신 등)이 제한적임
🔵 방법 2: 수동으로 ssh-keygen으로 직접 생성
✅ 과정
- 로컬 PC에서 SSH 키 쌍 생성
ssh-keygen -t rsa -f ~/.ssh/my-gcp-key -C [USERNAME]
옵션 설명:
t rsa: RSA 키 타입으로 생성f: 파일 이름 지정C: 키에 주석(사용자명) 추가
- 생성된 파일:
| 파일 | 내용 |
|---|---|
my-gcp-key | 비밀 키 (Private Key) |
my-gcp-key.pub | 공개 키 (Public Key) |
- 퍼블릭 키 파일(
.pub)을 복사해서 GCP에 등록
- GCP 콘솔 → Compute Engine → VM 인스턴스 → SSH 키 추가
- 또는
gcloud compute instances add-metadata명령어 사용
gcloud compute instances add-metadata [VM_NAME] \
--zone=[ZONE] \
--metadata-from-file ssh-keys=~/.ssh/my-gcp-key.pub
- 접속 시 수동으로 키 지정
- 참고로 EXTERNAL_IP는 VM 인스턴스 외부 IP를 의미한다.
ssh -i ~/.ssh/my-gcp-key [USERNAME]@[EXTERNAL_IP]
✅ 장점
- 키 이름, 위치, 주석 등 모두 직접 설정 가능
- 하나의 키를 여러 서버에 재사용 가능
- 기업 보안 정책에 맞춰 커스터마이징 가능
✅ 단점
- 수동 등록, 수동 관리 필요
- 실수로 권한(600) 설정 안 하면 보안 위험
📌 참고: SSH 키 파일 권한 설정
비밀키 파일(.pem, .key, id_rsa 등)은 반드시 권한을 600으로 제한해야 합니다.
chmod 600 ~/.ssh/my-gcp-key
안 하면 SSH 접속 시 다음 에러 발생:
WARNING: UNPROTECTED PRIVATE KEY FILE!
✅ 요약: 어떤 방식을 언제 쓰나?
| 상황 | 추천 방법 |
|---|---|
| 빠르게 GCP VM 접속하고 싶을 때 | gcloud compute ssh (자동 생성) |
| 키를 직접 관리하고 싶을 때 | ssh-keygen 수동 생성 후 수동 등록 |
| 회사/팀 보안 정책을 따를 때 | ssh-keygen 후 수동 등록 (권한 설정 주의) |
🎯 결론
위와 같은 방법으로 ssh 키를 생성할 수 있다.
ssh키는 생성되면, 어느곳에서든 사용이 가능하다. 용도별로 이름을 나누어 key를 생성할 수 있지만, 그러지 않고 하나의 키로 전부 사용하는 것도 가능하다는 말이다.
이제 생성한 키를 가지고 원하는 곳에 사용하면 된다.
댓글