GitHub SSH ํค ๋ฑ๋ก ๊ฐ์ด๋
GitHub ๊ณ์ ์ SSH ํค๋ฅผ ๋ฑ๋กํ์ฌ ์ ์ฅ์๋ฅผ ๋ณต์ ํ๊ฑฐ๋ ์ธ์ฆํ ๋ ๋งค๋ฒ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ์ง ์๋ ๋ฐฉ๋ฒ์ ์๋ดํฉ๋๋ค.
๐ ๊ฐ์
**SSH (Secure Shell)**๋ ๋คํธ์ํฌ๋ฅผ ํตํด ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณด๋ด์ง ์๊ณ ๋ ์์ ํ ์ธ์ฆ์ ์ ๊ณตํ๋ ํ๋กํ ์ฝ์ ๋๋ค. SSH ํค ์์ GitHub์ ๋ฑ๋กํ๋ฉด ์๊ฒฉ ์ฆ๋ช ์ ๋งค๋ฒ ์ ๋ ฅํ์ง ์๊ณ ๋ ์ ์ฅ์๋ฅผ ๋ณต์ , ํ, ํธ์ํ ์ ์์ต๋๋ค.
GitHub๋ ๋ ๊ฐ์ง ์ ํ์ SSH ํค๋ฅผ ์ง์ํฉ๋๋ค:
- Ed25519 (๊ถ์ฅ) โ ํ๋์ ์ด๋ฉฐ ์์ ํ๊ณ ํค ํฌ๊ธฐ๊ฐ ์์ต๋๋ค
- RSA (4096๋นํธ) โ ๋ ๊ฑฐ์ ํธํ์ฉ, Ed25519๊ฐ ์ง์๋์ง ์๋ ํ๊ฒฝ์์๋ง ์ฌ์ฉํ์ธ์
๐ ๏ธ ์ค์ ๋จ๊ณ
1. ๊ธฐ์กด SSH ํค ํ์ธ
์ ํค๋ฅผ ์์ฑํ๊ธฐ ์ ์ ์ด๋ฏธ ํค๊ฐ ์๋์ง ํ์ธํฉ๋๋ค.
Linux / macOS / WSL:
ls -la ~/.ssh/
Windows (PowerShell):
Get-ChildItem $env:USERPROFILE\.ssh
id_ed25519, id_ed25519.pub, id_rsa, id_rsa.pub ํ์ผ์ด ์๋์ง ํ์ธํฉ๋๋ค. ์ฌ์ฉํ ํค ์์ด ์ด๋ฏธ ์์ผ๋ฉด 3๋จ๊ณ๋ก ๊ฑด๋๋ฐ์ธ์.
2. ์ SSH ํค ์์ฑ
Ed25519 ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด ์ SSH ํค๋ฅผ ์์ฑํฉ๋๋ค (๊ถ์ฅ).
Linux / macOS / WSL:
ssh-keygen -t ed25519 -C "<your-email@example.com>"
Windows (PowerShell):
ssh-keygen -t ed25519 -C "<your-email@example.com>"
ํค ํ์ผ ์์น๋ฅผ ๋ฌป๋ ํ๋กฌํํธ์์ Enter๋ฅผ ๋๋ฌ ๊ธฐ๋ณธ๊ฐ(~/.ssh/id_ed25519)์ ์ ์ฉํฉ๋๋ค.
์ํธ(passphrase)๋ฅผ ๋ฌป๋ ํ๋กฌํํธ์์๋ ์์ ํ ์ํธ๋ฅผ ์ ๋ ฅํ๊ฑฐ๋ Enter๋ฅผ ๋๋ฌ ๋น์๋ ์ ์์ต๋๋ค. ์ํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ธ ํค๊ฐ ์ ์ถ๋๋๋ผ๋ ์ถ๊ฐ ๋ณด์ ๊ณ์ธต์ด ์ ์ฉ๋ฉ๋๋ค.
3. ๊ณต๊ฐ ํค ํ์ธ ๋ฐ ๋ณต์ฌ
๊ณต๊ฐ ํค๋ฅผ ํ์ํ๊ณ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌํฉ๋๋ค.
Linux / macOS / WSL:
cat ~/.ssh/id_ed25519.pub
Windows (PowerShell):
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub
๊ณต๊ฐ ํค๋ ssh-ed25519 ๋๋ ssh-rsa๋ก ์์ํ๊ณ ์ด๋ฉ์ผ ์ฃผ์๋ก ๋๋ฉ๋๋ค. ์ ์ฒด ์ถ๋ ฅ์ ์ ํํ์ฌ ๋ณต์ฌํ์ธ์.
โ ๏ธ ๋ณด์ ์ฃผ์: ๊ฐ์ธ ํค(
id_ed25519๋๋id_rsa,.pub์์ด)๋ฅผ ์ ๋ ๊ณต์ ํ๊ฑฐ๋ ๊ฒ์ํ์ง ๋ง์ธ์. ๊ณต๊ฐ ํค(id_ed25519.pub)๋ง ๊ณต์ ํด๋ ์์ ํฉ๋๋ค.
4. GitHub์ ํค ๋ฑ๋ก
- GitHub์ ๋ก๊ทธ์ธํฉ๋๋ค
- ํ๋กํ ์ฌ์ง ํด๋ฆญ โ Settings ํด๋ฆญ
- ์ผ์ชฝ ์ฌ์ด๋๋ฐ์์ SSH and GPG keys ํด๋ฆญ
- New SSH key ํด๋ฆญ
- Title ํ๋์ ์ค๋ช
์ด ํฌํจ๋ ๋ ์ด๋ธ์ ์
๋ ฅํฉ๋๋ค (์:
๋ด ๋ ธํธ๋ถ,์ฌ๋ฌด์ค PC) - Key ํ๋์ ๊ณต๊ฐ ํค๋ฅผ ๋ถ์ฌ๋ฃ์ต๋๋ค
- Add SSH key ํด๋ฆญ
5. ์ฐ๊ฒฐ ํ ์คํธ
SSH ํค๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋ฑ๋ก๋์๋์ง ํ์ธํฉ๋๋ค.
ssh -T git@github.com
์ฒซ ์ฐ๊ฒฐ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ๊ณ ๊ฐ ํ์๋ ์ ์์ต๋๋ค:
The authenticity of host 'github.com (IP ์ฃผ์)' can't be established.
RSA key fingerprint is SHA256:xxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
yes๋ฅผ ์ ๋ ฅํ๊ณ Enter๋ฅผ ๋๋ฅด์ธ์. ์ฑ๊ณตํ๋ฉด ๋ค์ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค:
Hi <username>! You've successfully authenticated, but GitHub does not provide shell access.
6. SSH๋ก ์ ์ฅ์ ๋ณต์
์ฐ๊ฒฐ์ ํ์ธํ ํ SSH ์ฃผ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฅ์๋ฅผ ๋ณต์ ํฉ๋๋ค.
git clone git@github.com:<owner>/<repository>.git
<owner>๋ฅผ ์ ์ฅ์ ์์ ์๋ก, <repository>๋ฅผ ์ ์ฅ์ ์ด๋ฆ์ผ๋ก ๋์ฒดํ์ธ์.
๐ SSH ํค ๋ฑ๋ก ํ์ธ
GitHub ๊ณ์ ์ ๋ฑ๋ก๋ ๋ชจ๋ SSH ํค๋ฅผ ๋ชฉ๋ก์ผ๋ก ๋ณด๋ ค๋ฉด:
- Settings โ SSH and GPG keys๋ก ์ด๋ํฉ๋๋ค
- ์ ๋ชฉ๊ณผ ์์ฑ ๋ ์ง์ ํจ๊ป ๋ฑ๋ก๋ ํค ๋ชฉ๋ก์ ํ์ธํฉ๋๋ค
๐ฉบ ๋ฌธ์ ํด๊ฒฐ
| ์ฆ์ | ์์ธ | ํด๊ฒฐ |
|---|---|---|
Permission denied (publickey) | SSH ํค๊ฐ ๋ฑ๋ก๋์ง ์์๊ฑฐ๋ ์๋ชป๋ ํค ์ฌ์ฉ | ๊ณต๊ฐ ํค๊ฐ GitHub์ ๋ฑ๋ก๋์ด ์๋์ง ํ์ธํฉ๋๋ค. ์ฌ๋ฐ๋ฅธ ๊ฐ์ธ ํค๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํฉ๋๋ค. |
ssh -T๋ "successfully authenticated"๋ผ๊ณ ํ์ง๋ง git ์์
์ ์คํจ | ํค๊ฐ ํน์ ์ ์ฅ์์ ์ถ๊ฐ๋์ง ์์ | SSH ํค๊ฐ ํด๋น ์ ์ฅ์์ ๋ํ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ถํ์ด ์๋์ง ํ์ธํฉ๋๋ค. |
| ์ฐ๊ฒฐ ์๊ฐ ์ด๊ณผ | ํฌํธ 22๋ฅผ ์ฐจ๋จํ๋ ๋ฐฉํ๋ฒฝ ๋๋ ๋คํธ์ํฌ ๋ฌธ์ | ๋คํธ์ํฌ ์ค์ ์ ํ์ธํ๊ฑฐ๋ HTTPS๋ฅผ ๋์ ์ฌ์ฉํฉ๋๋ค. |
git@github.com: Permission denied | ์๋ชป๋ ์๊ฒฉ์ง URL ํ์ | ์๊ฒฉ์ง URL์์ git@github.com:(์ฝ๋ก )์ ์ฌ์ฉํ๊ณ https://github.com/์ด ์๋์ง ํ์ธํฉ๋๋ค. |
| "Too many authentication failures" | ํค ์๋ ํ์๊ฐ ๋ง์ ์๋ฒ๊ฐ ๊ฑฐ๋ถ | ssh -vT git@github.com์ผ๋ก ๋๋ฒ๊น
ํ๊ฑฐ๋ -i ~/.ssh/id_ed25519๋ก ํค๋ฅผ ์ง์ ํฉ๋๋ค. |
๐ ๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก
- ๊ฐ์ธ ํค(
id_ed25519๋๋id_rsa)๋ฅผ ์ ๋ ๊ณต์ ํ์ง ๋ง์ธ์. ์ด์, ์ด๋ฉ์ผ ์ฒจ๋ถ, ์ ์ฅ์ ์ปค๋ฐ์ ํฌํจํ์ง ๋ง์ธ์. - SSH ํค ์์ฑ ์ ์ํธ(passphrase)๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ธ ํค๊ฐ ์ ์ถ๋๋๋ผ๋ ๋ณดํธํ์ธ์.
- ๊ธฐ๊ธฐ๋ณ๋ก ๊ณ ์ ํ SSH ํค ์ฌ์ฉ โ ๋ ธํธ๋ถ, ๋ฐ์คํฌํฑ, ์๋ฒ์ ์๋ก ๋ค๋ฅธ ํค๋ฅผ ๋ฑ๋กํ์ธ์.
- ๋ฑ๋ก๋ ํค ์ ๊ธฐ ๊ฐ์ฌ โ ์ค๋๋๊ฑฐ๋ ์ฌ์ฉํ์ง ์๋ SSH ํค๋ GitHub ๊ณ์ ์์ ์ ๊ฑฐํ์ธ์.
- ์กฐ์ง์์ ์ค์ ์ง์ค์ ํค ๊ด๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ SSH ์ธ์ฆ์ ์ฌ์ฉ์ ๊ณ ๋ คํ์ธ์.
๐ ์ฐธ์กฐ
- GitHub Docs: SSH ์ ๋ณด
- GitHub Docs: ์ SSH ํค ์์ฑ
- GitHub Docs: ์ SSH ํค ์ถ๊ฐ
- OpenSSH ๋ฌธ์
๋ฒ์ : 1.0
์ต์ข
์
๋ฐ์ดํธ: 2026-09-24
์์ค ํ์ผ: giipv3/public/help/github-ssh-key.ko.md