
SSH(Secure Shell) μ
μ격 μλ²μ 보μλ λ°©μμΌλ‘ μ μνκΈ° μν νλ‘ν μ½μ
λλ€.
μ¦, μνΈνλ ν΅μ μ ν΅ν΄ μλ²μ μμ νκ² μ μνκ±°λ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μ μ μκ² ν©λλ€.
GitHubλ GitLabμμλ μ΄ SSHλ₯Ό μ΄μ©ν΄
λΉλ°λ²νΈ μμ΄ μμ νκ² μΈμ¦ν μ μμ΅λλ€.
SSH μΈμ¦μλ λ κ°μ ν€κ° μ¬μ©λ©λλ€.
| μ’ λ₯ | μ€λͺ |
|---|---|
| Private Key (κ°μΈν€) | λ΄ μ»΄ν¨ν°μλ§ μ μ₯λλ λΉλ° ν€μ λλ€. μ λ μΈλΆμ λ ΈμΆνλ©΄ μ λ©λλ€. |
| Public Key (곡κ°ν€) | μλ²(GitHub, GitLab λ±)μ λ±λ‘νλ ν€μ λλ€. λꡬλ λ³Ό μ μμ΅λλ€. |
SSH μΈμ¦ κ³Όμ μ μ΄λ κ² μλν©λλ€ π
μ¦, λΉλ°λ²νΈ μμ΄λ λ΄κ° βμΈμ¦λ μ¬μ©μβμμ μ¦λͺ ν μ μμ΅λλ€.
GPG Keyλ SSHμ λΉμ·νμ§λ§,
Git 컀λ°μ μ λ’°μ±(βμ΄ μ»€λ°μ΄ μ§μ§ μ΄ μ¬λμ΄ ν κ²μΈκ°?β) μ 보μ₯νκΈ° μν΄ μ¬μ©λ©λλ€.
# 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 μ μ₯μλ₯Ό ν΄λ‘ ν λλ HTTPS λ°©μκ³Ό SSH λ°©μ λ κ°μ§κ° μμ΅λλ€.
git clone https://github.com/username/repository.git
| νλͺ© | μ€λͺ |
|---|---|
| μΈμ¦ λ°©λ² | μμ΄λΒ·λΉλ°λ²νΈ or Personal Access Token (PAT) |
| 보μ μμ€ | SSL κΈ°λ° (μμ νμ§λ§ μλλ λ§€λ² μΈμ¦ νμ) |
| μ₯μ | μ€μ μ΄ κ°λ¨ν¨ (SSH ν€ νμ μμ) |
| λ¨μ | μλλ νΈμν λλ§λ€ μΈμ¦μ μκ΅¬ν¨ (λ¨, μΊμ λλΆμ μμ¦μ μλ λ‘κ·ΈμΈλ¨) |
| μΆμ² μν© | λ¨λ°μ± ν΄λ‘ , μμ μ κ·Ό, SSH μ€μ μ΄ μ λ νκ²½ |
git clone git@github.com:username/repository.git
| νλͺ© | μ€λͺ |
|---|---|
| μΈμ¦ λ°©λ² | SSH Key κΈ°λ° (Public/Private Key) |
| 보μ μμ€ | ν€ μ κΈ°λ° μνΈνλ‘ λ§€μ° μμ |
| μ₯μ | ν λ² ν€λ₯Ό λ±λ‘νλ©΄ μ΄νμ λΉλ°λ²νΈ μμ΄ μ¬μ© κ°λ₯ |
| λ¨μ | μ΅μ΄ μ€μ (SSH Key μμ± λ° λ±λ‘)μ΄ νμ |
| μΆμ² μν© | μμ£Ό νΈμ/ν νλ κ°μΈ νΉμ ν νλ‘μ νΈ |
| κ΅¬λΆ | HTTPS | SSH |
|---|---|---|
| μΈμ¦ λ°©μ | κ³μ μ 보 λλ Personal Access Token | SSH Key (Public/Private) |
| 보μμ± | μ€κ° (SSL μνΈν) | λ§€μ° λμ (λΉλμΉ ν€ μνΈν) |
| μ€μ λμ΄λ | μ¬μ | μ΄κΈ°μ μ½κ° λ³΅μ‘ |
| νΈμμ± | μμ¦μ μΊμ± λλΆμ νΈλ¦¬ν¨ | ν λ² λ±λ‘ ν μμ μλν |
| μ¬μ© μΆμ² | 1νμ± μ κ·Ό, μμ μ¬μ© | μ§μμ μΈ νμ , μ₯κΈ° νλ‘μ νΈ |
μλ HTTPS λ°©μμ λ§€λ² μΈμ¦(μμ΄λ/λΉλ°λ²νΈ λλ ν ν°)μ μμ²νμ΅λλ€.
νμ§λ§ νμ¬λ Git Credential Manager(GCM) μ΄λΌλ μμ€ν
μ΄
μΈμ¦ μ 보λ₯Ό OSμ μμ νκ² μ μ₯ν΄λκΈ° λλ¬Έμ,
ν λ² μ
λ ₯νλ©΄ λ€μ λ¬Όμ΄λ³΄μ§ μμ΅λλ€.
SSH μΈμ¦μ μ»΄ν¨ν°μ μ μ₯λ Private Key λ₯Ό κΈ°μ€μΌλ‘ μΈμ¦ν©λλ€.
μ¦, μ μ»΄ν¨ν°μλ Private Keyκ° μκΈ° λλ¬Έμ,
GitHubκ° βμ΄ μ¬μ©μκ° λ§λ€βλ μ¦κ±°λ₯Ό μ°Ύμ§ λͺ»ν΄ μΈμ¦μ΄ μ€ν¨ν©λλ€.
| νλͺ© | HTTPS | SSH |
|---|---|---|
| μΈμ¦ μ μ₯ μμΉ | OS Credential Manager | λ‘컬 .ssh ν΄λ |
| μ»΄ν¨ν° λ°λ λ | ν ν°/μ격 λ³΅μ¬ μ μ μ§ κ°λ₯ | μ ν€ λ±λ‘ νμ |
| 보μ κ°λ | μ€κ° | λ§€μ° λμ |
| μ΄κΈ° μ€μ | κ°λ¨ | μ½κ° λ³΅μ‘ |
| μ₯κΈ° μ¬μ© νΈμμ± | μ’μ (μΊμ± λλΆ) | μ΅κ³ (μμ μλ μΈμ¦) |
SSH Key β λΉλ°λ²νΈ μμ΄ GitHubμ μμ νκ² μΈμ¦ν μ μλ μ΄μ
GPG Key β 컀λ°μ βμ΄ μ»€λ°μ μ§μ§ λ΄κ° ν κ²βμμ μ¦λͺ νλ μ μμλͺ
HTTPS Clone β κ°λ¨νμ§λ§ μΊμ± λλΆμ μΈμ¦μ μλμΌλ‘ μ²λ¦¬ν¨
SSH Clone β ν λ² μ€μ νλ©΄ λΉλ°λ²νΈ μμ΄ μμ μ μΌλ‘ μ¬μ© κ°λ₯
π SSHλ λ΄ μ»΄ν¨ν°μ β보μ μ΄μ β, GPGλ 컀λ°μ βμ λ’° μλͺ
βμ
λλ€.
HTTPSλ κ°νΈνμ§λ§ OSκ° μΈμ¦μ μΊμ±ν΄μ£Όλ λ°©μμ΄λ©°,
SSHλ μ»΄ν¨ν°μ μ μ₯λ ν€λ‘λ§ μΈμ¦λλ―λ‘, μ νκ²½μμλ ν€ λ±λ‘μ΄ λ€μ νμν©λλ€.