GitHub์์ 2021๋ 8์๋ถํฐ ๋น๋ฐ๋ฒํธ ์ธ์ฆ์ ์ค๋จํ๋ฉด์, Git ์์ ์ Personal Access Token(PAT)์ด๋ SSH ํค๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ค๋์ ๋ ํธ๋ฆฌํ๊ณ ์์ ํ SSH ํค ์ธ์ฆ ์ค์ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค.
์ SSH๋ฅผ ์ฌ์ฉํด์ผ ํ ๊น์?
- ๋ณด์: ๊ฐ์ธํค/๊ณต๊ฐํค ์ํธํ ๋ฐฉ์์ผ๋ก ๋ ์์
- ํธ๋ฆฌํจ: ํ ๋ฒ ์ค์ ํ๋ฉด ๋น๋ฐ๋ฒํธ ์ ๋ ฅ ๋ถํ์
- ์์ ์ฑ: ํ ํฐ ๋ง๋ฃ ๊ฑฑ์ ์์
๐ SSH ํค ์์ฑํ๊ธฐ
1. ๊ธฐ์กด SSH ํค ํ์ธ
ํฐ๋ฏธ๋์์ ๊ธฐ์กด SSH ํค๊ฐ ์๋์ง ๋จผ์ ํ์ธํด๋ณด์ธ์.
ls -la ~/.ssh
id_rsa, id_ed25519 ๋ฑ์ ํ์ผ์ด ์๋ค๋ฉด ์ด๋ฏธ SSH ํค๊ฐ ์กด์ฌํฉ๋๋ค.
2. SSH ํค ์์ฑ
๊ธฐ์กด ํค๊ฐ ์๊ฑฐ๋ ์๋ก ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ธ์.
ssh-keygen -t ed25519 -C "your_email@example.com"
๐ก ํ: your_email@example.com ๋ถ๋ถ์ ๋ณธ์ธ์ GitHub ๊ณ์ ์ด๋ฉ์ผ๋ก ๋ณ๊ฒฝํ์ธ์.
์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ง๋ฌธ๋ค์ด ๋ํ๋ฉ๋๋ค:
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/username/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
๋ชจ๋ Enter๋ฅผ ๋๋ฌ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
3. SSH ์์ด์ ํธ์ ํค ์ถ๊ฐ
# SSH ์์ด์ ํธ ์์
eval "$(ssh-agent -s)"
# ์์ฑํ ํค๋ฅผ ์์ด์ ํธ์ ์ถ๊ฐ
ssh-add ~/.ssh/id_ed25519
๐ GitHub์ SSH ํค ๋ฑ๋กํ๊ธฐ
1. ๊ณต๊ฐํค ๋ณต์ฌ
์์ฑ๋ ๊ณต๊ฐํค ๋ด์ฉ์ ๋ณต์ฌํฉ๋๋ค.
cat ~/.ssh/id_ed25519.pub
ํฐ๋ฏธ๋์ ์ถ๋ ฅ๋ ๋ด์ฉ์ ์ ์ฒด ์ ํํด์ ๋ณต์ฌํ์ธ์. ssh-ed25519๋ก ์์ํด์ ์ด๋ฉ์ผ ์ฃผ์๋ก ๋๋๋ ํ ์ค์ ๊ธด ํ ์คํธ์ ๋๋ค.
2. GitHub ์ค์ ํ์ด์ง๋ก ์ด๋
- GitHub.com์ ๋ก๊ทธ์ธ
- ์ฐ์๋จ ํ๋กํ ์ฌ์ง ํด๋ฆญ
- Settings ์ ํ
3. SSH ํค ์ถ๊ฐ
- ์ผ์ชฝ ์ฌ์ด๋๋ฐ์์ SSH and GPG keys ํด๋ฆญ
- New SSH key ๋ฒํผ ํด๋ฆญ
- ํผ ์์ฑ:
- Title: ๊ตฌ๋ณํ๊ธฐ ์ฌ์ด ์ด๋ฆ (์: โ๋ด ๋ ธํธ๋ถโ, โํ์ฌ ์ปดํจํฐโ)
- Key: ๋ณต์ฌํ ๊ณต๊ฐํค ๋ด์ฉ ๋ถ์ฌ๋ฃ๊ธฐ
- Add SSH key ํด๋ฆญ
โ๏ธ Git ์ ์ฅ์์ SSH ์ ์ฉํ๊ธฐ
๊ธฐ์กด HTTPS ์ ์ฅ์๋ฅผ SSH๋ก ๋ณ๊ฒฝ
์ด๋ฏธ HTTPS๋ก ํด๋ก ํ ์ ์ฅ์๊ฐ ์๋ค๋ฉด ์๊ฒฉ URL์ SSH๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
# ํ์ฌ ์๊ฒฉ URL ํ์ธ
git remote -v
# HTTPS๋ฅผ SSH๋ก ๋ณ๊ฒฝ
git remote set-url origin git@github.com:username/repository.git
์์: https://github.com/jmkim1914/dog_care.git โ git@github.com:jmkim1914/dog_care.git
์๋ก ํด๋ก ํ ๋
# SSH URL๋ก ํด๋ก
git clone git@github.com:username/repository.git
๐งช SSH ์ฐ๊ฒฐ ํ ์คํธ
์ค์ ์ด ์๋ฃ๋์๋์ง ํ ์คํธํด๋ณด์ธ์.
ssh -T git@github.com
์ฑ๊ณตํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฉ์์ง๊ฐ ๋ํ๋ฉ๋๋ค:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
๐ฏ ์ค์ ์ฌ์ฉํ๊ธฐ
์ด์ Git ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ๋ ๋น๋ฐ๋ฒํธ ์ ๋ ฅ ์์ด ์์ ํ ์ ์์ต๋๋ค!
# ํ์ผ ๋ณ๊ฒฝ ํ ํธ์
git add .
git commit -m "Update README"
git push origin main # ๋น๋ฐ๋ฒํธ ์
๋ ฅ ๋ถํ์! ๐
๐ง ๋ฌธ์ ํด๊ฒฐ
Permission denied (publickey) ์๋ฌ
SSH ํค๊ฐ ์ ๋๋ก ๋ฑ๋ก๋์ง ์์์ ๋ ๋ฐ์ํฉ๋๋ค.
- ๊ณต๊ฐํค๊ฐ ์ ํํ ๋ณต์ฌ๋์๋์ง ํ์ธ
- SSH ์์ด์ ํธ์ ํค๊ฐ ์ถ๊ฐ๋์๋์ง ํ์ธ: ssh-add -l
- GitHub์ ์ฌ๋ฌ ๊ฐ์ ํค๊ฐ ๋ฑ๋ก๋ ๊ฒฝ์ฐ ์ฌ๋ฐ๋ฅธ ํค์ธ์ง ํ์ธ
SSH ์์ด์ ํธ ๊ด๋ จ ์๋ฌ
# SSH ์์ด์ ํธ ์ฌ์์
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
SSH ์ธ์ฆ ์ค์ ์ ํตํด ๋ ์์ ํ๊ณ ํธ๋ฆฌํ๊ฒ GitHub๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ต๋๋ค!
์์ฝ
- โ SSH ํค ์์ฑ
- โ GitHub์ ๊ณต๊ฐํค ๋ฑ๋ก
- โ Git ์ ์ฅ์ URL์ SSH๋ก ๋ณ๊ฒฝ
- โ ์ฐ๊ฒฐ ํ ์คํธ
์ด์ ๋งค๋ฒ ํ ํฐ์ด๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ ํ์ ์์ด git push, git pull ๋ฑ์ ๋ช ๋ น์ด๋ฅผ ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.