[Github] Password authentication was removed์ ๋์ฒํ๊ธฐ
์ ๋ OS X, Ubuntu Linux, Windows 3๊ฐ์ง OS์์ Github์ ์ด์ฉํด ์์ค ์ฝ๋๋ฅผ ์์ฑํ๊ณ ํธ์ํ๋ ์์ ์ ํด์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ, ์ด๋ฅผ ์ฌํ๊น์ง ์๊ฐ์์ด ํธํ๋๋ก ์ฌ์ฉํ์ฌ ์ด๋ค OS์์๋ SSH Key๋ฅผ ์ฌ์ฉํ๊ณ , ์ด๋ค OS์์๋ Password ์ธ์ฆ์ ์ฌ์ฉํ๊ณ , ์ด๋ค OS์์๋ OAuth Key๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
๊ทธ๋ฌ๋ ์ค๋, ๊ฐ์ธ์ฉ PC์ ์ค์น๋ Ubuntu Linux์์ ์๋ก์ด ๋ชจ๋์ ๋ง๋ค๊ณ , Github์ Push๋ฅผ ํ๋๋ ์๋์ ๊ฐ์ ๋ฉ์์ง๋ฅผ ๋ง๋๊ฒ ๋์์ต๋๋ค.
Password authentication is deprecated
์ธ์ ๊ฐ ๋น์ทํ ๋ฉ์ผ์ Github์์ ์ฌ๋ฌ๋ฒ ๋ฐ์์๋๋ฐ, ์กฐ๋ง๊ฐ ์์ ํ์ง ์์ ๋ณด์ ์ฅ์น๋ค์ ๋ํด ๋ ์ด์ ์ง์ํ์ง ์๋๋ค๋ ๋ด์ฉ์ด์์ต๋๋ค. ์ด์ ๊ทธ ๋ ์ง๊ฐ ๋ ๊ฒ ๊ฐ๋๊ตฐ์.
Password ๋ฐฉ์์ ๋ํ ์ฅ์ ์ ๋์ ๋ ํฌ์งํฐ๋ฆฌ๊ฐ ์๋ ๋ค๋ฅธ ๋ ํฌ์งํฐ๋ฆฌ์ ์ฝ๋๋ฅผ ๊ธฐ์ฌํ๋ ๋ฑ์ ์ฌ์ฉํ ๋ ๋ค๋ฅธ Github ๊ณ์ ์ ์ฌ์ฉํ ์ ์๊ณ , ํนํ ๊ฐ์ธ์ฉ PC์์ ํ์ฌ์ ์์ค ์ฝ๋๋ฅผ ์์ ํ๋ ๋ฑ์ ์์ ์ ํตํด ๋ค๋ฅธ ๊ณ์ ์ผ๋ก ์ฝ๊ฒ ๋ก๊ทธ์ธํ๊ณ ๊ฐ์ํ ์ ์์ด ํธ๋ฆฌํ ์ ์ด ์์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ฐ๋ฆฌ๋ ์ฐจ๊ธฐ ๋์์ผ๋ก ๋ฌด์์ ์ ํํ๋ฉด ์ข์๊น์? ์ฐ๋ฆฌ๋ ์ฌ๊ธฐ์ ๋ ๊ฐ์ง ์ ํ์ ํ ์ ์์ต๋๋ค.
- Personal Access Token์ ๋ฐ๊ธํ์ฌ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
- SSH Key๋ฅผ ๋ฐ๊ธํ์ฌ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
๋ ๋ฐฉ๋ฒ ๋ชจ๋ ๊ฐ์์ ๊ณ์ ์ ๊ณ ์ ํ Key๋ฅผ ๋ฐ๊ธ ๋ฐ์ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ค๋ง ์ข ๋ ์์ ํ ๊ฒ์ SSH Key๋ผ๊ณ ํ ์ ์๋๋ฐ์. ์ ๊ทธ๋ฌ๋๋ฉด, Personal Access Token์ ํ ๋ฒ ๋ฐ๊ธํ ๋ค ๋ค๋ฅธ ๋ณด์กฐ ๊ธฐ์ต ์ฅ์น์ ๊ทธ ํ ์คํธ ๊ฐ์ ๋ณต์ฌํ์ฌ ์ฌ๋ฌ ๊ตฐ๋ฐ์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์กฐ๊ธ ๋ณด์์ ์ทจ์ฝํฉ๋๋ค.
๊ทธ๋ผ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
Personal Access Token
Personal Access Token์ ๋ํ ์์ธํ ์ค๋ช ์ ์๋ตํ๋๋ก ํ๊ฒ ์ต๋๋ค. ์ด ํฌ์คํธ๋ Github์์ Deprecated๋ ๋ณด์ ์๋จ์ ๋ค๋ฅธ ์๋จ์ผ๋ก ์ ํํ๊ธฐ ์ํจ์ ๋๋ค.
๋จผ์ ์์ ์ Github ๊ณ์ ์ ๋ก๊ทธ์ธํ๊ณ , Settings์ ๋ค์ด๊ฐ๋๋ค.
Settings์์๋ ๊ฐ์ ๊ณ์ ์ ๋ํ ๋ค์ํ ์ค์ ์ ์ ๊ณตํฉ๋๋ค.
์ผ์ชฝ ์ฌ์ด๋๋ฐ ๋ฉ๋ด์์ Developer Settings๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ญ์ ์ผ์ชฝ ์ฌ์ด๋๋ฐ ๋ฉ๋ด์์ Personal access tokens๋ฅผ ํด๋ฆญํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด Generate new token ๋ฒํผ์ ํด๋ฆญํ์ฌ ์๋ก์ด ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ ์ ์์ต๋๋ค. (ํ ํฐ ๋ฐ๊ธ์ ์ํด ํจ์ค์๋๋ฅผ ์๊ตฌํ ์ ์์ต๋๋ค.)
Note ๋์ KEY์ ์ด๋ฆ์ ์ ๋ ฅํ๊ณ Select scopes์๋ repo๋ฅผ ํด๋ฆญํฉ๋๋ค. ์ฌ๊ธฐ์ Select scopes๋ ํด๋น ํ ํฐ์ด ๊ฐ์ง๋ ๊ถํ์ ์ด์ผ๊ธฐํ๋ฉฐ ์ฐ๋ฆฌ๋ ๋ ํฌ์งํฐ๋ฆฌ์์ repository๋ฅผ ์ฝ๊ณ ์ฐ๋ ๊ฒ์ด ์ฃผ ์ญํ ์ด๋ฏ๋ก repo์๋ง ํด๋ฆญํด์ฃผ๋ฉด ์ถฉ๋ถํฉ๋๋ค.
๋ชจ๋ ์์ ์ด ๋๋ฌ์ผ๋ฉด Generate Token์ ํด๋ฆญํฉ๋๋ค.
๋ฐ๊ธ ๋ฐ์ ํ ํฐ์ ํค๊ฐ ํ์๋๋ฉฐ ํด๋น ํค๋ฅผ ๋ณต์ฌํฉ๋๋ค.
ํ ๋ฒ ์ฌ์ดํธ๋ฅผ ๋น ์ ธ๋๊ฐ๋ฉด ํด๋น ํค๋ ๋ค์ ๋ณต์ฌํ ์ ์์ผ๋ฉฐ ์ธ๋ถ์ ๋ ธ์ถ๋์ง ์๋๋ก ์ฃผ์ํ์ธ์.
์ด์ ๋ฐ๊ธ๋ฐ์ ํค๋ฅผ ์ฌ์ฉํ์ฌ username๊ณผ ํจ๊ป password๋ก ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
์ฌ์ฉํ ํค๋ ์ ํจ๊ธฐ๊ฐ๊น์ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ๋ฐ๊ธํ ํค๋ ๋ค์ ์ฌ์ฉํ๋ ค๋ฉด ์ฌ๋ฐ๊ธํด์ผ ํ๊ณ , ์ฌ๋ฐ๊ธํ๋ฉด ๊ธฐ์กด์ ๋ฐ๊ธํ๋ ํค๋ ์ ํจ๊ธฐ๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฌ๋ผ์ง๊ฑฐ๋ ์ ํจ๊ธฐ๊ฐ์ ์ง์ ํ์ง ์์ผ๋ฉด ๋ฌด์ฉํ ํค๋ง ์์ฑ๋๋ฏ๋ก ๋ณด์์ ์ทจ์ฝํด์ง๋๋ค.
ํ์ ์ด๊ฒ์ ๋ค์ ์ฌ์ฉํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ์ด ํค๋ฅผ ์์ ํ์ง ์์ ์ผ๋ฐ ํ์ผ ํฌ๋งท์ธ txt ๋ด์ง์ ์ ์ฅํ์ฌ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ ์ฌ๋ฆด ์ ์์ง๋ง ์ด๊ฒ์ ์ ๋ ๊ถ์ฅํ์ง ์์ต๋๋ค. ํค๋ ํญ์ ์ ํด์ง ํค ๋ณด๊ด์์ ์ ์ฅํด์ผ ํฉ๋๋ค.
ํค ๋ณด๊ด์๋ OS๋ณ๋ก ๋ค๋ฅด๊ฒ ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ ์๋์ ์ง์นจ์ ๋ฐ๋ผ ์ฌ์ฉํ๋ OS์ ๋ง์ถฐ ์ค์ ํ์๋ฉด ๋ฉ๋๋ค.
์ฐ๋ถํฌ ๋ฆฌ๋ ์ค์์๋ ์๋์ ์ง์นจ์ ๋ฐ๋ฆ ๋๋ค.
Ubuntu Linux์์๋ ํค ๊ด๋ฆฌ๋ฅผ ์ํด GNOME keyring์ ์ฌ์ฉํฉ๋๋ค. ์ด์ ์๋ ์ฐ๋ถํฌ ๋ฆฌ๋ ์ค์ Credential Manager๊ฐ ์์ด pull, fetch, push ๋๋ง๋ค ๋งค๋ฒ ID/PW๋ฅผ ์ฌ์ฉํด์ผ ํ์ต๋๋ค.
ํ์ง๋ง ๋งค๋ฒ ID/PW๋ฅผ ์ฌ์ฉํ์ฌ Git ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ํจ์จ์ ์ด์ง ์์ต๋๋ค. GNOME keyring์ 2014๋ ์ deprecated ๋์์ผ๋ฏ๋ก ์ฐ๋ฆฌ๋ libsecret์ ์ฌ์ฉํ์ฌ ํค ๊ด๋ฆฌ๋ฅผ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
$ sudo apt install libsecret-1-0 libsecret-1-dev
์ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด libsecret ๋ชจ๋์ ์ค์นํด์ค๋๋ค.
Git์ libsecret์ ์ ์ฉํ๊ธฐ ์ํด /usr/share/doc/git/contrib/credential/libsecret ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ํ์ฌ git-credential-libsecret ์์ค๋ฅผ ๋น๋ํฉ๋๋ค. Makefile์ด ์ด๋ฏธ ์ ๊ณต๋์ด ์์ผ๋ฏ๋ก ์ฐ๋ฆฌ๋ ๊ฐ๋จํ make ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ ์ ์์ต๋๋ค.
$ git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
๋น๋ํ ๋ฐ์ด๋๋ฆฌ๋ฅผ git์ ์ธ์ฆ ๋๊ตฌ๋ก ์ง์ ํฉ๋๋ค.
์ด์ ์์์ ๋ฐ๊ธ ๋ฐ์ ํ ํฐ์ผ๋ก ๋ ํฌ์งํฐ๋ฆฌ๋ฅผ clone ํ๊ฒ ๋๋ฉด libsecret์ ๋ฐ๊ธ๋ฐ์ ํค๊ฐ ์ ์ฅ๋์ด ์ดํ Git ์ด๋ฒคํธ์์๋ ๋ ์ด์ Password๋ฅผ ๋ฌป์ง ์์ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
GNOME์ ํค ๊ด๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์ ์ธ seahorse๋ฅผ ์คํํด๋ณด๋ฉด, ๋ฐฉ๊ธ ๋ฑ๋กํ ํค๊ฐ ์ ์์ ์ผ๋ก ์ฌ๋ผ์์์ ๋ณผ ์ ์์ต๋๋ค.
๋ง์ฝ, GUI๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋ฆฌ๋ ์ค ํ๊ฒฝ์์ ํค๊ฐ ๋ฑ๋ก๋์ด ์๋์ง๋ฅผ ํ์ธํ๊ณ ์ ํ๋ค๋ฉด lssecret ์ปค๋งจ๋๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด ์ปค๋งจ๋๋ ๊ณต๊ต๋กญ๊ฒ๋ ๊ธฐ๋ณธ ๋ฆฌ๋ ์ค์์ ์ ๊ณตํ์ง ์์ผ๋ฉฐ APT ์์กด์ฑ ๊ด๋ฆฌ์์์๋ ๋ฑ๋ก๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ์ง์ ์์ค๋ฅผ ๋ฐ์ ๋น๋ํด์ผ ํฉ๋๋ค.
https://github.com/gileshuang/lssecret
Windows์์๋ ์๋์ ์ง์นจ์ ๋ฐ๋ฆ ๋๋ค.
Windows 10์์๋ Github์ ์ธ์ฆ ๊ด๋ฆฌ๋ฅผ ์ํ Microsoft Git Credential Manager Core๊ฐ ์กด์ฌํฉ๋๋ค. ์ด๋ Windows์ ์ ์ดํ์์ Windows ์๊ฒฉ ์ฆ๋ช ๊ณผ ํจ๊ป ํ์ฅ๋์ด ์์ด ์ฌ๊ธฐ์ Personal Access Key๋ฅผ ๋ณด๊ดํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ ๊ฐ์ง ํ์ด ์๋ค๋ฉด GCM Core๋ Windows ๋ฟ ์๋๋ผ Linux, Mac OS X์์๋ ํธํ๋๋ฉฐ ๊ฐ์ OS์์ ์ ๊ณตํ๋ ํค ๊ด๋ฆฌ ํด์ด ์๋ ํด๋น ์ฝ์ด๋ฅผ ์ด์ฉํด์ ๊ด๋ฆฌํ ์๋ ์์ต๋๋ค.
๋จผ์ ์ ์ดํ์์ ์ฌ์ฉ์ ๊ณ์ ์ ๋๋ฅธ ๋ค์, ์๊ฒฉ ์ฆ๋ช ๊ด๋ฆฌ์์ Windows ์๊ฒฉ ์ฆ๋ช ์ ํด๋ฆญํฉ๋๋ค.
์๋์ชฝ์์ ์ผ๋ฐ ์๊ฒฉ ์ฆ๋ช ์ ์๊ฒฉ ์ฆ๋ช ์ถ๊ฐ๋ผ๋ ๋ฒํผ์ด ์์ต๋๋ค. ๊ธฐ์กด์ ์ฌ์ฉํ๋ git:https://github.com์ ์ ๊ฑฐํ๊ณ , ์ผ๋ฐ ์๊ฒฉ ์ฆ๋ช ์ ์ถ๊ฐํฉ๋๋ค.
Github ์ฃผ์์ ๊ณ์ ์ ๋ณด๋ฅผ ์ ๋ ฅํ ํ ํ์ธ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ญ์ ํจ์ค์๋๋ฅผ ํตํ ์ธ์ฆ์ ๋ ์ด์ ๋์ง ์์ผ๋ฉฐ ํ ํฐ์ ์ ๋ ฅํ ๋ค์ Git ์ด๋ฒคํธ๋ฅผ ์คํํ ์ ์์์ ๋ณด์ค ์ ์์ต๋๋ค.
OS X์์๋ ์๋์ ์ง์นจ์ ๋ฐ๋ฆ ๋๋ค.
Mac OS X์์๋ ํค ๊ด๋ฆฌ๋ฅผ ์ํด OS X Keychain์ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ Keychain์ ์์์ ๋ฐ๊ธ ๋ฐ์ ํค๋ฅผ ๋ฑ๋กํ๊ณ , ์ฌ์ฉํ ๋ ํฌ์งํฐ๋ฆฌ๋ ๋ฌถ์ด์ค์ผ ํฉ๋๋ค.
Mac OS X์ ์๋ Keychain Access๋ฅผ ์คํํ๋ฉด github.com์์ ์ฌ์ฉํ ๊ธฐ์กด์ ์ ๋ณด๊ฐ ์์ ๊ฒ์ ๋๋ค. ๊ธฐ์กด์ ์ ๋ณด๋ฅผ ์ ๊ฑฐํด์ค๋๋ค.
$ security delete-internet-password -l github.com
ํฐ๋ฏธ๋์ ๋์ ์์ ๋ช ๋ น์ด๋ก๋ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ๋ฐ๊ธ๋ฐ์ ํ ํฐ์ ์ด์ฉํด Git ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ๊ธฐ์กด์ ์ ๋ณด๊ฐ ํ ํฐ์ ์ ๋ณด๋ก ์ง์ ๋จ์ ์ ์ ์์ต๋๋ค. ์ ๊ธฐํ ๊ฒ์ Mac OS X์์๋ Github์์ ๋ฐ๋ก ํ ํฐ์ ํ๊ธฐํ๊ฑฐ๋ ์ ํจ๊ธฐ๊ฐ์ด ์ง๋๋ฉด ์๋์ผ๋ก Keychain Access์์๋ ์ญ์ ๋ฉ๋๋ค.
SSH Key
์๊ฒฉ Git ๋ ํฌ์งํฐ๋ฆฌ๋ฅผ Password์ ๋์ฒด๋ก ์ด์ฉํ ์ ์๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์๋ SSH key๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ Personal Access Token์ฒ๋ผ ์๊ฒฉ ๋ฒค๋์์ ๊ณ์ ์ ๋ฐ๋ฅธ ํค ํ๋๋ก ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ด ์๋ ์๊ฒฉ ๋ฒค๋์ ๊ณต๊ฐํค๋ฅผ ์ฃผ๊ณ , ์์ ์ ํธ์คํธ์์ ๊ฐ์ธํค๋ก ํต์ ํ๋ ๋ฐฉ์์ ๋๋ค.
๋ ์์ธํ๊ฒ ์์๋ณด๊ณ ์ถ๋ค๋ฉด ์ด๊ณ ์๋์ ๊ธ์ ์ถ์ฒํฉ๋๋ค.
https://opentutorials.org/module/432/3742
๋จผ์ ์ด ๋ฐฉ๋ฒ์ ์ด์ฉํ๊ธฐ ์ํด์๋ SSH key๋ฅผ ๋ฐ๊ธ ๋ฐ์์ผ ํฉ๋๋ค.
$ ssh-keygen -t ed25519 -C "contact@neonkid.xyz"
ssh-keygen ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ key๋ฅผ ๋ฐ๊ธ ๋ฐ์ต๋๋ค. ์ด ๋ ์ฝ๋ฉํธ์ ์ฌ๋ฌ๋ถ๋ค์ด ์ฌ์ฉํ Github์ ๊ณ์ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ ๋ ฅํด์ค๋๋ค.
์ฌ๊ธฐ์ ์ฌ์ฉํ ED25519๋ ์ํธํ ์๊ณ ๋ฆฌ์ฆ ์ข ๋ฅ๋ฅผ ์ด์ผ๊ธฐ ํฉ๋๋ค. Github์์ ๊ถ์ฅํ๋ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ด์ง๋ง ๋ง์ฝ ๊ตฌํ OS๋ฅผ ์ฌ์ฉํ๊ณ ์์ด ํด๋น ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ์ ์๋ค๋ฉด RSA ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ ๋ ๋ฌด๋ฐฉํฉ๋๋ค.
๊ธฐ๋ณธ ํ์ผ ์ด๋ฆ์ id_{์ํธํ_์๊ณ ๋ฆฌ์ฆ_์ด๋ฆ} ํ์์ผ๋ก ์ง์ ๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ ed25519 ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ผ๋ฏ๋ก id_ed25519 ํ์ผ ์ด๋ฆ์ด ์ง์ ๋๋ฉฐ .pub์ด ๋ถ์ด ์๋ ๊ฒ์ด ๊ณต๊ฐํค, ๊ทธ๋ ์ง ์์ ๊ฒ์ด ๊ฐ์ธํค์ ๋๋ค.
์ด๋ฒ์๋ ์๊น Settings์์ Developer Settings๊ฐ ์๋ SSH and GPG Keys๋ฅผ ์ ํํด์ค๋๋ค.
์ฌ๊ธฐ์์ New SSH key๋ฅผ ํด๋ฆญํ์ฌ ์์์ ๋ฐ๊ธํ ๊ณต๊ฐํค๋ฅผ ๋ฑ๋กํฉ๋๋ค.
์์ PRIVATE KEY๋ผ๊ณ ์จ์ ธ ์๋ ๋ถ๋ถ์ ๊ฐ์ธํค, ssh-ed25519๋ก ์์ํ๋ ๊ฒ์ด ๊ณต๊ฐํค์ด๋ฏ๋ก ์ฐ๋ฆฌ๋ ๋ฐ์ ๋ด์ฉ์ ๋ณต์ฌํ์ฌ Key ๋ถ๋ถ์ ๋ฃ์ด์ฃผ๊ณ , Add SSH key๋ฅผ ํด๋ฆญํฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ๋งจ ๋ฐ์ ์๋ก์ด ์ถ๊ฐ๋ SSH ๊ณต๊ฐํค๊ฐ ๋์ค๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
SSH key๋ฅผ ์ฌ์ฉํ์ฌ Git ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ ๋๋ https๊ฐ ์๋ git@github.com์ ์ฌ์ฉํ์ฌ์ผ ํฉ๋๋ค.
์ฌ๊ธฐ์ ์ฌ๋ฌ ๊ฐ์ ๊ณ์ ์ ํ๋์ ๋๋ฐ์ด์ค์์ ์ฌ์ฉํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์?
ํ๋์ PC์์ ์ฌ๋ฌ ๊ณ์ ์ SSH key๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
~/.ssh ๋๋ ํฐ๋ฆฌ์์ config ํ์ผ์ ๋ง๋ค์ด์ค๋๋ค.
# neonkid account
Host github.com-maintainer
Hostname github.com
User git
IdentityFile ~/.ssh/id_ed25519
# another account
Host github.com-business
Hostname github.com
User git
IdentityFile ~/.ssh/id_rsa
๊ทธ๋ฐ ๋ค์ ์์ ๋ด์ฉ์ ์ ๋ ฅํฉ๋๋ค. ์์ ๋ด์ฉ์๋ ๋ ๊ฐ์ง๊ฐ ๋ด๊ฒจ์ ธ ์์ต๋๋ค. ํ ๊ฐ์ง๋ ์์์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ ์ ๊ณ์ ์ธ neonkid์ ๊ณ์ ์ด ์๊ณ , ๋ฐ์ ๋ด์ฉ์ ๋ ๋ค๋ฅธ ๊ณ์ ์ ๋ํ SSH key์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ณณ์ ๋๋ค.
์์ ๊ฐ์ด ์ ์ฅํ ํ, ๋ค๋ฅธ ๊ณ์ ์ ๋ํ SSH key๋ฅผ ssh-keygen ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด์ ์ด๋ฒ์ rsa๋ก ๋ฐ๊ธ ๋ฐ์์ค๋๋ค.
$ ssh-keygen -t rsa -C "webmaster@neonkid.xyz"
์ด๋ ๊ฒ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด id_rsa.pub์ id_rsa๋ผ๋ ๋ ๊ฐ์ง ํ์ผ์ด ์์ฑ๋๋ฉฐ ์ญ์ ๋ง์ฐฌ๊ฐ์ง๋ก id_rsa์ ๊ณต๊ฐํค๋ฅผ Github ๊ณ์ ์ ๋ฑ๋กํฉ๋๋ค.
์ด์ Git clone์ ํตํ์ฌ ์๊ฒฉ ๋ ํฌ์งํฐ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋๋ ์์ Config์์ ์ ๋ ฅํ User@Host๋ฅผ ์ ๋ ฅํ์ฌ ์ฌ์ฉํ SSH key๋ฅผ ๊ตฌ๋ถ์ง์ด ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ทธ๋์ผ๋ง ์ค์ ๋์ด ์๋ SSH key๋ฅผ ๋ฐ๋ผ๊ฐ๊ฒ ๋๋ฉฐ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ 403 ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ง์น๋ฉฐ...
์ฌ๊ธฐ๊น์ง Git์ ์ด์ฉํด ์๊ฒฉ ๋ ํฌ์งํฐ๋ฆฌ์ ์ ๊ทผํ๊ธฐ ์ํด ์ฌ์ฉํ๋ Password๋ฅผ ๋์ฒดํ 2๊ฐ์ง ์๋จ์ ๋ํด ์์๋ดค์ต๋๋ค.
๋ณด์์ด ์ค์์๋๋ ๋งํผ ๊ฐ์๋ก Username/Password ๊ธฐ๋ฐ์ ๋จ์ ๋ณด์ ์๋จ์ด ์ฌ๋ผ์ง๊ณ , ๋ ๊ฐ๋ ฅํ ๋ณด์์ ์๊ตฌํ๋ ๊ฒ์ด ์ ์ ๋์ ๋๊ณ ์์ต๋๋ค. ์ด์ ๋ฐ๋ผ ์์ค ์ฝ๋ ๊ด๋ฆฌ์๋ ์ด๊ฒ์ ์ ๊ฒฝ์จ์ผ ํ ๋๊ฐ ์จ ๊ฒ์ด๊ฒ ์ง์.
PAT(Personal Access Token)๊ณผ SSH key์ ๊ฐ๊ฐ ์ฅ๋จ์ ์ ์ ๋ฆฌํ์๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
PAT์ ์ฅ์
- Password ๋์ ์ ํจ๊ธฐ๊ฐ์ด ์กด์ฌํ๋ ํค๋ฅผ ์ด์ฉํ์ฌ ๊ด๋ฆฌ๊ฐ ์ฉ์ด.
- OS ํน์ Github์์ ์ ๊ณตํ๋ ํค ๊ด๋ฆฌ ์์คํ ์ ์ด์ฉํ์ ๋ ๊ทธ ํจ๊ณผ๋ฅผ ํกํกํ ๋ณผ ์ ์์.
PAT์ ๋จ์
- ํ ๋๋ฐ์ด์ค์์ ๋ค์ค ๊ณ์ ์ฌ์ฉ์ ์ํ ์์๊ฐ ๋ฏธํก
- ํค ๊ด๋ฆฌ ์ํ๋ก ์ ์ถ๋๋ ๊ฒฝ์ฐ ๋ณด์์ ์ฌ๊ฐํ ์ทจ์ฝ์ ์ด ๋ฐ์.
SSH Key ์ฅ์
- ๊ณต๊ฐํค์ ๊ฐ์ธํค๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ํค์ ์ ์ถ๋ก ์ธํ ์ํ ๋ถ๋ด์ด ๋ค์ ์ค์.
- Password, PAT์ ๊ฐ์ ํ๋์ ํค๊ฐ ์๋ ์ ํด์ง ํค์์๋ง ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ์ง์ ๋ ๋๋ฐ์ด์ค ๊ด๋ฆฌ๊ฐ ์ฉ์ด.
SSH Key ๋จ์
- PC์ ์ง์ ๊ฐ์ธํค๋ฅผ ์ ์ฅํ๋ฏ๋ก ๊ฐ์ธ PC์ ๋ํ ๊ด๋ฆฌ ๋ถ๋ด์ด ์ฆ๊ฐ
์ด๋ค ๋ณด์ ์๋จ์ด๋ ์ง ์ฅ๋จ์ ์์ง๋ง ์์ ์ ํ๊ฒฝ์ ๋ฐ๋ผ ์๋ง๊ฒ ์ค์ ํ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ๋ด ๋๋ค.
2๊ฐ์ ๋ง์ ์์ฑํ ๋ธ๋ก๊ทธ ๊ธ์ด์์ต๋๋ค. ๊ทธ ๋์์๋ ์ ์์ ์ ์๋ จํ๋๋ฐ ๋ง์ ์๊ฐ์ ํ ์ ํ๊ณ ์์ผ๋ฉฐ ๋ฉฐ์น ์ ์๋ ๋ธ๋ก๊ทธ ๊ธ์ ์์ฑํ๋ ค ํ์ผ๋ ๋ช ๋ฒ์ ์ฒ ์ํ๊ฒ ๋์์ต๋๋ค. ์์ฑํ๊ณ ์ ํ๋ ๊ธ์ ๋ํด ๋ด๊ฐ ์ ์๊ณ ์ฐ๋ ๊ฒ์ธ์ง ์ฌ์ ํ ๋ง์ค์์ด ์ฌํ ํ์ด๋ผ๊ณ ์๊ฐํ๊ณ , ๋ธ๋ก๊ทธ์ ๊ธ๋ณด๋ค๋ ์ข ๋ ์์ ์ ์ญ๋ ๊ฐํ์ ์ ๋ฆฌ์ ์ข ๋ ์ถฉ์คํ๊ณ ์ ํฉ๋๋ค.
'DevOps > Git' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Github] Github Actions์ Firebase Channel์ ์ด์ฉํ ์คํ ์ด์ง ํ๊ฒฝ ๊ตฌ์ถ (0) | 2021.08.29 |
---|---|
Github Actions - React ํ๋ก์ ํธ๋ฅผ Firebase์ Deploy ํ๊ธฐ (0) | 2019.08.27 |
Github Actions - Matrix & Secrets (0) | 2019.08.26 |
Github Actions - ๊ฐ๋จํ ์ํฌํ๋ก์ฐ ์์ฑํด๋ณด๊ธฐ (0) | 2019.08.24 |
Github Actions ๋๋์ด ํ์ฑํ ๋๋ค. (0) | 2019.08.24 |