[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 Key๋ž€? ์„œ๋ฒ„์— ์ ‘์† ํ•  ๋•Œ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋Œ€์‹  key๋ฅผ ์ œ์ถœํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.  SSH Key๋Š” ์–ธ์ œ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€? ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณด๋‹ค ๋†’์€ ์ˆ˜์ค€์˜ ๋ณด์•ˆ์„ ํ•„์š”๋กœ ํ•  ๋•Œ ๋กœ๊ทธ์ธ ์—†์ด ์ž๋™์œผ๋กœ ์„œ๋ฒ„์— ์ ‘์† ํ•  ๋•Œ SSH Key

opentutorials.org

 

๋จผ์ € ์ด ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 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๊ฐœ์›” ๋งŒ์— ์ž‘์„ฑํ•œ ๋ธ”๋กœ๊ทธ ๊ธ€์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋™์•ˆ์—๋Š” ์ € ์ž์‹ ์„ ์ˆ˜๋ จํ•˜๋Š”๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์„ ํ• ์• ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋ฉฐ์น  ์ „์—๋„ ๋ธ”๋กœ๊ทธ ๊ธ€์„ ์ž‘์„ฑํ•˜๋ ค ํ–ˆ์œผ๋‚˜ ๋ช‡ ๋ฒˆ์„ ์ฒ ์ˆ˜ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ž‘์„ฑํ•˜๊ณ ์ž ํ•˜๋Š” ๊ธ€์— ๋Œ€ํ•ด ๋‚ด๊ฐ€ ์ž˜ ์•Œ๊ณ  ์“ฐ๋Š” ๊ฒƒ์ธ์ง€ ์—ฌ์ „ํžˆ ๋ง์„ค์ž„์ด ์‹ฌํ•œ ํƒ“์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ , ๋ธ”๋กœ๊ทธ์˜ ๊ธ€๋ณด๋‹ค๋Š” ์ข€ ๋” ์ž์‹ ์˜ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”์™€ ์ •๋ฆฌ์— ์ข€ ๋” ์ถฉ์‹คํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

 

 

๋ฐ˜์‘ํ˜•
TAGS.

Tistory Comments