์ด๋๋์ ๋์ผํ๊ฒ ๋ก์ปฌ์์ ์ ๋ฐ์ดํธํ ์ฝ๋๋ฅผ ๋ด ์๊ฒฉ GitHub Repository์ push ํ๋ ค๊ณ ํ ๋, ๊ฐ์๊ธฐ github์ ์ธ์ฆ ๊ด๋ จ ์๋ฌ๊ฐ ํฐ๋ฏธ๋์ ๋ฎ์๋ค. ์๋ฌ์ ์์ง๋ ์ด๋ ๋ค. '2021๋ 8์ 13์ผ๋ถ๋ก GitHub ๊ณ์ ์ ๋น๋ฐ๋ฒํธ๋ก ์๊ฒฉ์ git ๋์์ ์ ์ดํ๋ ๊ถํ์ ์ ํํ๋ค'๋ ๊ฒ์ด๋ค. ์๋ 7์ GitHub Blog์ ๊ธ๋ก ๋ฏธ๋ฆฌ ๊ณต์ง๋ฅผ ํ๋ค๋๋ฐ.. CLI๋ฅผ ํตํด์ https ์ฃผ์๋ก GitHub ์๊ฒฉ ์ ์ฅ์์ ์ ๊ทผํ๋ ๋๋ ๋นํฉํ์ง ์์ ์ ์์๋ค.
๊ทผ๋ฐ, ๊นํ ๋ธ๋ก๊ทธ์ *'the following customers remain unaffected by this change'*๋ผ๋ ์์ธ ์กฐํญ์ด ์์๋ค. ๊ทธ ์ค ํ๋๊ฐ SSH-based
์ธ์ฆ์ ํ ์ฌ๋์ ๊ด์ฐฎ๋ค๋ ๊ฒ์ด์๋ค. ์๋ก ๋ค๋ฅธ ์ปดํจํฐ๊ฐ์ ํต์ ์์ '๋ณด์์ฑ'์ ๋์ฌ์ฃผ๋ SSH ํ๋กํ ์ฝ ๋ฐฉ์ ๊ธฐ๋ฐ์ ์ฝ๋ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค๊ณ ๋ ์๊ณ ์์๋ค. ๋ค๋ง, https url ํ์์ด ๋๋ฌด ํธํด์ ์๋ํ ์๊ฐ์ ํ์ง ์๊ณ ์์๋ค. ๊ฒฝ์ฐ๊ฐ ๊ฒฝ์ฐ์ธ ๋งํผ, ์ด๋ฒ์ SSH ํ๋กํ ์ฝ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํ์๋ค. ๊ทธ ๊ฒฝํ์ ๊ณต์ ํ๋ค.
SSH
Secure SHell์ ์ค์ ํํ์ธ SSH๋ ์๊ฒฉ ์ปดํจํฐ์์ ํต์ ์ ์ํ ํ๋กํ ์ฝ์ด๋ค. Secureํ๋ค๋ ๊ฒ์ด ๊ฐ์กฐ๋๊ธฐ ๋๋ฌธ์ '๋ณด์'์ ์ง์คํ ํ๋กํ ์ฝ์์ ์ ์ ์๋ค. SSH๋ ๊ธฐ๋ณธ์ ์ผ๋ก 2๊ฐ์ง์ ํค๋ก ์ํธํ, ๋ณตํธํ ๊ณผ์ ์ ๊ฑฐ์ณ์ ํต์ ํ๋ค.
SSH์์ 2๊ฐ์ง ํค๊ฐ ์ฌ์ฉ๋๋ค๊ณ ํ๋๋ฐ, ๊ทธ๊ฒ์ ๊ฐ๊ฐ public key (๊ณต๊ฐํค)
private key (๋น๋ฐํค)
๋ค. SSH ํค๋ฅผ ์์ฑํ๋ฉด ๊ณต๊ฐํค์ ๋น๋ฐํค๊ฐ ๋์์ ์์ฑ๋๋ค. ๋น๋ฐํค๋ ๋ด ๋ก์ปฌ ์ปดํจํฐ์ ํน์ ์ฅ์์, '์ต์
๋ํ๊ฒ (์ ์ ์ ์ํฅ์ ์ํด) ๋น๋ฐํค ํ์ธ์ ์ํ ๋น๋ฐ๋ฒํธ ์ค์ ์ ํ ์ ์๋ค.', ์ ์ฅ๋๋ค. ๊ณต๊ฐํค๋ ๋ฆฌ๋ชจํธ, ์ฆ ํต์ ํ๋ ค๊ณ ํ๋ ์๊ฒฉ ์ ์ฅ์(๋์ ๊ฒฝ์ฐ๋ GitHub)์ ๋ถ์ฌํ๋ค.
์๊ฒฉ ์ ์ฅ์์ ํต์ ์ ํ๊ธฐ ์ํด์, ์์ฒญ์ ๋ณด๋ด๋ ๋ด ์ปดํจํฐ(๋ก์ปฌ ํ๊ฒฝ)์์๋ ์๊ฒฉ ์ปดํจํฐ์ ๊ณต๊ฐํค์ ๋ด ๋น๋ฐํค๋ฅผ ๋ง์ถ์ด๋ณด๊ณ ์ ํํ 'ํ ์'์ธ์ง๋ฅผ ํ์ ํ๋ค. ์๋ก๊ฐ ํ ์์ ํค๋ผ๋ ๊ฒ์ด ์ฆ๋ช ๋๋ฉด ๋ ์ปดํจํฐ ์ฌ์ด์ '์ํธํ๋' ์ฑ๋์ด ํ์ฑ๋๊ณ ์๋ก์ ํค๋ก ์ํธํ ๋ณตํธํํ๋ ๊ณผ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค.
GitHub์ ์๊ฒฉ ์ ์ฅ์์ ์ฝ๋๋ฅผ ๋ณต์ ํ๊ณ (git clone), ๋ด๊ฐ ๋ก์ปฌํ๊ฒฝ์์ ์์ ํ ์ฝ๋๋ฅผ GitHub ์๊ฒฉ ์ ์ฅ์์ ์ฌ๋ฆฌ๋(git push) ์์ ์ญ์ ๋ก์ปฌ-์๊ฒฉ ์ ์ฅ์๊ฐ์ ํต์ ์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ '๋ณด์'์ด ๊ฐํ๋ SSH ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๋์ฑ ์์ ํ๊ฒ ์ฝ๋ ๋ฒ์ ์ ๊ด๋ฆฌํ ์ ์๊ฒ๋๋ค.
SSH ๋ฐฉ์์ผ๋ก GitHub ์ฐ๊ฒฐํ๊ธฐ
SSH๋ฅผ ์ด์ฉํด์ GitHub๊ณผ ์ฝ๋๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด์๋ SSH ํค
๋ฅผ ๊ฐ์ฅ ๋จผ์ ์์ฑํด์ผ ํ๋ค. ๋๋ ๋งฅ(macOS)์ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌด๋ค ๊ทธ๊ฒ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ๊ฒ ๋ค. ์ฌ์ค ๋ค๋ฅธ ์ด์์ฒด์ ๋ค๋ ๋ฐฉ๋ฒ์ ๋น์ทํ๋ค.
1. ๋ก์ปฌ ๊ฒฝ๋ก์์ ~/.ssh ๋ฅผ ์ฐพ์๋ค์ด๊ฐ๋ค.
$ cd ~/.ssh
$ ls
$ cat id_rsa.pub
ํด๋น ๊ฒฝ๋ก์์ ls
์ปค๋งจ๋๋ก ์กด์ฌํ๋ ๋๋ ํ ๋ฆฌ ๋๋ ํ์ผ์ ์ดํ๋ค. id_dsa
, id_rsa.pub
์ ๊ฐ์ ํ์ผ์ด ์์ ์ ์๋ค. ๋ง์ฝ ์ด ํ์ผ์ด ์๋ค๋ฉด ํค ์์ฑ๊ธฐ๋ก ํค๋ฅผ ์์ฑํด์ผ ํ๋ค.
ํ์ผ์ด ์ด๋ฏธ ์์ฑ๋์ด ์๋ค๋ฉด cat
์ปค๋งจ๋๋ก id_rsa.pub
ํ์ผ์ ํ ๋ฒ ์ฝ์ด๋ณด๋ฉด ์ข๋ค. ssh-rsa~ ๋ก ์์ํ๋ ์์ฃผ ๊ธด ์ํธํ๋ ํค๊ฐ ๋ณด์ผ ๊ฒ์ด๋ค. ํ์ฅ์๊ฐ .pub
์ธ ๊ฒ์ ๋ณด๋ฉด ์ด๋ฏธ ๋์น์ฑ๊ฒ ์ง๋ง, ํด๋น ํ์ผ์ ํค๊ฐ ๊ณต๊ฐํค๋ค.
1-1. ssh-keygen์ผ๋ก ํค ์์ฑํ๊ธฐ
macOS์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ssh-keygen
์ด๋ผ๊ณ ํ๋ ํ๋ก๊ทธ๋จ์ด ์๋ค. ~/.ssh ๊ฒฝ๋ก์ ์๋ฌด๋ฐ ํ์ผ์ด ์๋ค๋ฉด ๋ฃจํธ ๊ฒฝ๋ก์์ $ ssh-keygen
์ด๋ผ๋ ์ปค๋งจ๋๋ฅผ ์
๋ ฅํ์ฌ SSH๋ฅผ ์ํ ํค๋ฅผ ์์ฑํ๋ฉด ๋๋ค.
๊ทธ ๊ณผ์ ์์ ์๋ง ํค๋ฅผ ์กฐํํ๊ธฐ ์ํ ๋น๋ฐ๋ฒํธ ์ค์ ์ ๋ฌผ์ด๋ณธ๋ค. ๋ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๋น๋ฐ๋ฒํธ ์ ๋ ฅ ์์ฒด๋ฅผ ๋ฒ๊ฑฐ๋ก์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ผญ ์ค์ ํ๋ค. ๋น๋ฐ๋ฒํธ๋ฅผ ์์ฑํ๋ค๋ฉด ๋ค์ ~/.ssh ๊ฒฝ๋ก์ ๋ค์ด๊ฐ์ ํ์ผ์ด ์ ์์ฑ๋์๋์ง ํ์ธํด๋ณด์.
2. ๊ณต๊ฐํค GitHub์ ๋ฑ๋กํ๊ธฐ
์ด์ ์๊ฒฉ ์ ์ฅ์์ธ GitHub์ ๋ด ๊ณ์ ์ ๋ด ๋ก์ปฌ ์ปดํจํฐ์์ ์์ฑํ SSH ๊ณต๊ฐํค๋ฅผ ๋ฑ๋กํด์ค๋ค. ๋ฑ๋ก์ GitHub ๐ (์ฐ์ธก ์๋จ์ ์ ์ ์์ด์ฝ) Settings ๐ SSH and GPG Keys ๐ (์ด๋ก์) New SSH Key ๋ฒํผ ํด๋ฆญ์ผ๋ก ๋ฑ๋กํ๋ฉด ๋๋ค.
๋ฑ๋ก์ ์๋ฃํ๋ค๋ฉด ๋ก์ปฌ ํฐ๋ฏธ๋์์ $ ssh -T git@github.com
๋ช
๋ น์ด๋ก SSH ๋ฐฉ์์ ์ธ์ฆ์ด ์ ๋์๋์ง ํ์ธํ ์ ์๋ค.
3. SSH ๋ฐฉ์์ผ๋ก GitHub ์ฌ์ฉํ๊ธฐ
์ด์ SSH ๊ธฐ๋ฐ์ผ๋ก GitHub ์ฐ๊ฒฐ์ ์ฌ์ฉํ ์ค๋น๋ ๋ค ๋ง์ณค๋ค. ๊ธฐ์กด๊ณผ ๋์ผํ๊ฒ ๋ก์ปฌ ํฐ๋ฏธ๋์์ ์ปค๋งจ๋๋ผ์ธ์ผ๋ก ์ ๊ทผํ ์ ์๋ค. ๋ค๋ง, SSH ๋ฐฉ์์ URL์ https URL๊ณผ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๊ทธ ๋ถ๋ถ๋ง ์ ์ ๊ฒฝ์ฐ๋ฉด ๋๋ค.
3-1. Git Clone
[] ์์๋ ๊ฐ์์ GitHub ๊ณ์ , Repository ์ด๋ฆ์ ์์ฑํ๋ฉด ๋๋ค.
$ git clone git@github.com:[username]/[repository name].git
3-2. ๊ธฐ์กด ๋ ํฌ์งํ ๋ฆฌ SSH ๋ฐฉ์ ์ฃผ์๋ก ๋ณ๊ฒฝํ๊ธฐ
๊ธฐ์กด์ https URL ๋ก ๋ฑ๋ก๋ ๋ ํฌ์งํ ๋ฆฌ๋ฐ์ ์์๋ ๋๋ ์๋์ ์ปค๋งจ๋๋ผ์ธ์ผ๋ก ํต์ ํ๊ณ ์ ํ๋ ์๊ฒฉ ์ ์ฅ์์ URL์ ๋ค SSH ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํด์ฃผ์๋ค.
$ git remote set-url [origin name] git@github.com:[username]/[repository name].git
SSH ๋ฐฉ์์ผ๋ก GitHub๊ณผ ์ฐ๊ฒฐํ๋ ๊ฒ์ ๋ํ ๊ฐ๋ตํ ๊ฒฝํ์ ์์ฑํ๋ค. ํน์ ๋์ฒ๋ผ 'SSH ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํด์ผ ํ๋๋ฐ..' ๋ผ๋์ง, '์ ๊นํ ์ปค๋งจ๋๋ผ์ธ ์ด์ ๋ชป์ฐ๋?' ๋ผ๊ณ ์ด์ง ํผ๋์ ๊ฒช์ ๋ถ์ด๋ผ๋ฉด ์ ๋ง ๋ฑ๋ก ๊ณผ์ ์ด ๊ฐ๋จํ๋ ๋น ๋ฅด๊ฒ ์๋ํด๋ณด๋ ๊ฒ์ ์ถ์ฒํ๋ค!
์ฐธ๊ณ ํ ๋ ํผ๋ฐ์ค