πŸ” SSH와 GPG Key 정리 + Git HTTPS vs SSH 차이

JisunminΒ·2025λ…„ 10μ›” 20일
post-thumbnail

🧩 SSH (Secure Shell)λž€?

SSH(Secure Shell) 은
원격 μ„œλ²„μ— λ³΄μ•ˆλœ λ°©μ‹μœΌλ‘œ μ ‘μ†ν•˜κΈ° μœ„ν•œ ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.
즉, μ•”ν˜Έν™”λœ 톡신을 톡해 μ„œλ²„μ— μ•ˆμ „ν•˜κ²Œ μ ‘μ†ν•˜κ±°λ‚˜ 데이터λ₯Ό 주고받을 수 있게 ν•©λ‹ˆλ‹€.

GitHubλ‚˜ GitLabμ—μ„œλ„ 이 SSHλ₯Ό μ΄μš©ν•΄
λΉ„λ°€λ²ˆν˜Έ 없이 μ•ˆμ „ν•˜κ²Œ 인증할 수 μžˆμŠ΅λ‹ˆλ‹€.


πŸ—οΈ SSH Key의 ꡬ성

SSH μΈμ¦μ—λŠ” 두 개의 ν‚€κ°€ μ‚¬μš©λ©λ‹ˆλ‹€.

μ’…λ₯˜μ„€λͺ…
Private Key (κ°œμΈν‚€)λ‚΄ μ»΄ν“¨ν„°μ—λ§Œ μ €μž₯λ˜λŠ” λΉ„λ°€ ν‚€μž…λ‹ˆλ‹€. μ ˆλŒ€ 외뢀에 λ…ΈμΆœν•˜λ©΄ μ•ˆ λ©λ‹ˆλ‹€.
Public Key (κ³΅κ°œν‚€)μ„œλ²„(GitHub, GitLab λ“±)에 λ“±λ‘ν•˜λŠ” ν‚€μž…λ‹ˆλ‹€. λˆ„κ΅¬λ‚˜ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

SSH 인증 과정은 μ΄λ ‡κ²Œ μž‘λ™ν•©λ‹ˆλ‹€ πŸ‘‡

  1. λ‚΄ 둜컬 컴퓨터 β†’ Private Key 보유
  2. GitHub μ„œλ²„ β†’ Public Key 보유
  3. 접속 μš”μ²­ μ‹œ μ„œλ²„κ°€ μ•”ν˜Έν™”λœ λ©”μ‹œμ§€λ₯Ό 전솑
  4. λ‚΄ Private Key둜 λ³΅ν˜Έν™”μ— μ„±κ³΅ν•˜λ©΄ '인증 μ™„λ£Œ'

즉, λΉ„λ°€λ²ˆν˜Έ 없이도 λ‚΄κ°€ β€˜μΈμ¦λœ μ‚¬μš©μžβ€™μž„μ„ 증λͺ…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


🧠 GPG (GNU Privacy Guard) Keyλž€?

GPG KeyλŠ” SSH와 λΉ„μŠ·ν•˜μ§€λ§Œ,
Git μ»€λ°‹μ˜ μ‹ λ’°μ„±(β€œμ΄ 컀밋이 μ§„μ§œ 이 μ‚¬λžŒμ΄ ν•œ 것인가?”) 을 보μž₯ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.

  • GPGλŠ” 컀밋에 μ „μžμ„œλͺ…(Signature) 을 μΆ”κ°€ν•©λ‹ˆλ‹€.
  • 이λ₯Ό 톡해 λ‹€λ₯Έ μ‚¬λžŒμ΄ κ°€μ§œ μ΄λ¦„μœΌλ‘œ 컀밋을 남겨도 μ‰½κ²Œ ꡬ뢄할 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ” GPG Key μ‚¬μš© μ˜ˆμ‹œ

# GPG ν‚€ 생성
gpg --full-generate-key

# μƒμ„±λœ GPG ν‚€ 확인
gpg --list-secret-keys --keyid-format=long

# Git 섀정에 GPG ν‚€ 등둝
git config --global user.signingkey <ν‚€ID>
git config --global commit.gpgsign true

GitHubμ—μ„œλŠ” GPG둜 μ„œλͺ…λœ 컀밋에
βœ… Verified ν‘œμ‹œκ°€ λœΉλ‹ˆλ‹€.


🌐 Git Clone의 두 κ°€μ§€ 방식

Git μ €μž₯μ†Œλ₯Ό 클둠할 λ•ŒλŠ” HTTPS 방식과 SSH 방식 두 κ°€μ§€κ°€ μžˆμŠ΅λ‹ˆλ‹€.


1️⃣ HTTPS ν˜•μ‹

git clone https://github.com/username/repository.git
ν•­λͺ©μ„€λͺ…
인증 λ°©λ²•μ•„μ΄λ””Β·λΉ„λ°€λ²ˆν˜Έ or Personal Access Token (PAT)
λ³΄μ•ˆ μˆ˜μ€€SSL 기반 (μ•ˆμ „ν•˜μ§€λ§Œ μ›λž˜λŠ” 맀번 인증 ν•„μš”)
μž₯점섀정이 간단함 (SSH ν‚€ ν•„μš” μ—†μŒ)
λ‹¨μ μ›λž˜λŠ” ν‘Έμ‹œν•  λ•Œλ§ˆλ‹€ 인증을 μš”κ΅¬ν•¨ (단, μΊμ‹œ 덕뢄에 μš”μ¦˜μ€ μžλ™ 둜그인됨)
μΆ”μ²œ μƒν™©λ‹¨λ°œμ„± 클둠, μž„μ‹œ μ ‘κ·Ό, SSH 섀정이 μ•ˆ 된 ν™˜κ²½

2️⃣ SSH ν˜•μ‹

git clone git@github.com:username/repository.git
ν•­λͺ©μ„€λͺ…
인증 방법SSH Key 기반 (Public/Private Key)
λ³΄μ•ˆ μˆ˜μ€€ν‚€ 쌍 기반 μ•”ν˜Έν™”λ‘œ 맀우 μ•ˆμ „
μž₯μ ν•œ 번 ν‚€λ₯Ό λ“±λ‘ν•˜λ©΄ 이후엔 λΉ„λ°€λ²ˆν˜Έ 없이 μ‚¬μš© κ°€λŠ₯
λ‹¨μ μ΅œμ΄ˆ μ„€μ •(SSH Key 생성 및 등둝)이 ν•„μš”
μΆ”μ²œ μƒν™©μžμ£Ό ν‘Έμ‹œ/ν’€ ν•˜λŠ” 개인 ν˜Ήμ€ νŒ€ ν”„λ‘œμ νŠΈ

βš–οΈ HTTPS vs SSH 비ꡐ μš”μ•½

ꡬ뢄HTTPSSSH
인증 방식계정 정보 λ˜λŠ” Personal Access TokenSSH Key (Public/Private)
λ³΄μ•ˆμ„±μ€‘κ°„ (SSL μ•”ν˜Έν™”)맀우 λ†’μŒ (λΉ„λŒ€μΉ­ ν‚€ μ•”ν˜Έν™”)
μ„€μ • λ‚œμ΄λ„μ‰¬μ›€μ΄ˆκΈ°μ— μ•½κ°„ 볡작
νŽΈμ˜μ„±μš”μ¦˜μ€ 캐싱 덕뢄에 νŽΈλ¦¬ν•¨ν•œ 번 등둝 ν›„ μ™„μ „ μžλ™ν™”
μ‚¬μš© μΆ”μ²œ1νšŒμ„± μ ‘κ·Ό, μž„μ‹œ μ‚¬μš©μ§€μ†μ μΈ ν˜‘μ—…, μž₯κΈ° ν”„λ‘œμ νŠΈ

πŸ’‘ HTTPS둜 ν΄λ‘ ν–ˆλŠ”λ° μ™œ 맀번 인증을 μ•ˆ λ¬Όμ–΄λ³΄λŠ”κ°€?

μ›λž˜ HTTPS 방식은 맀번 인증(아이디/λΉ„λ°€λ²ˆν˜Έ λ˜λŠ” 토큰)을 μš”μ²­ν–ˆμŠ΅λ‹ˆλ‹€.
ν•˜μ§€λ§Œ ν˜„μž¬λŠ” Git Credential Manager(GCM) μ΄λΌλŠ” μ‹œμŠ€ν…œμ΄
인증 정보λ₯Ό OS에 μ•ˆμ „ν•˜κ²Œ μ €μž₯해두기 λ•Œλ¬Έμ—,
ν•œ 번 μž…λ ₯ν•˜λ©΄ λ‹€μ‹œ 물어보지 μ•ŠμŠ΅λ‹ˆλ‹€.

πŸ” SSHλŠ” 컴퓨터가 λ°”λ€Œλ©΄ μ™œ 인증이 μ•ˆ 될까?

SSH 인증은 컴퓨터에 μ €μž₯된 Private Key λ₯Ό κΈ°μ€€μœΌλ‘œ μΈμ¦ν•©λ‹ˆλ‹€.
즉, μƒˆ μ»΄ν“¨ν„°μ—λŠ” Private Keyκ°€ μ—†κΈ° λ•Œλ¬Έμ—,
GitHubκ°€ β€œμ΄ μ‚¬μš©μžκ°€ λ§žλ‹€β€λŠ” 증거λ₯Ό μ°Ύμ§€ λͺ»ν•΄ 인증이 μ‹€νŒ¨ν•©λ‹ˆλ‹€.


🧱 HTTPS vs SSH 인증 ꡬ쑰 μš”μ•½

ν•­λͺ©HTTPSSSH
인증 μ €μž₯ μœ„μΉ˜OS Credential Manager둜컬 .ssh 폴더
컴퓨터 λ°”λ€” λ•Œν† ν°/자격 볡사 μ‹œ μœ μ§€ κ°€λŠ₯μƒˆ ν‚€ 등둝 ν•„μš”
λ³΄μ•ˆ κ°•λ„μ€‘κ°„λ§€μš° λ†’μŒ
초기 섀정간단약간 볡작
μž₯κΈ° μ‚¬μš© νŽΈμ˜μ„±μ’‹μŒ (캐싱 덕뢄)졜고 (μ™„μ „ μžλ™ 인증)

βœ… 정리

SSH Key β†’ λΉ„λ°€λ²ˆν˜Έ 없이 GitHub에 μ•ˆμ „ν•˜κ²Œ 인증할 수 μžˆλŠ” μ—΄μ‡ 

GPG Key β†’ 컀밋에 β€œμ΄ 컀밋은 μ§„μ§œ λ‚΄κ°€ ν•œ κ²ƒβ€μž„μ„ 증λͺ…ν•˜λŠ” μ „μžμ„œλͺ…

HTTPS Clone β†’ κ°„λ‹¨ν•˜μ§€λ§Œ 캐싱 덕뢄에 인증을 μžλ™μœΌλ‘œ μ²˜λ¦¬ν•¨

SSH Clone β†’ ν•œ 번 μ„€μ •ν•˜λ©΄ λΉ„λ°€λ²ˆν˜Έ 없이 μ•ˆμ •μ μœΌλ‘œ μ‚¬μš© κ°€λŠ₯


πŸ’¬ ν•œ 쀄 μš”μ•½

πŸ”‘ SSHλŠ” λ‚΄ μ»΄ν“¨ν„°μ˜ β€˜λ³΄μ•ˆ 열쇠’, GPGλŠ” μ»€λ°‹μ˜ β€˜μ‹ λ’° μ„œλͺ…β€™μž…λ‹ˆλ‹€.
HTTPSλŠ” κ°„νŽΈν•˜μ§€λ§Œ OSκ°€ 인증을 μΊμ‹±ν•΄μ£ΌλŠ” 방식이며,
SSHλŠ” 컴퓨터에 μ €μž₯된 ν‚€λ‘œλ§Œ μΈμ¦λ˜λ―€λ‘œ, μƒˆ ν™˜κ²½μ—μ„œλŠ” ν‚€ 등둝이 λ‹€μ‹œ ν•„μš”ν•©λ‹ˆλ‹€.

profile
λ‹¨μˆœ μ‚¬μš©μžκ°€ μ•„λ‹Œ, μ΄ν•΄ν•˜κ³  λ§Œλ“œλŠ” κ°œλ°œμžκ°€ 되기 μœ„ν•œ 기둝.

0개의 λŒ“κΈ€