๐Ÿ‘จโ€๐Ÿ’ป

SSH๋กœ GitHub ์—ฐ๊ฒฐํ•˜๊ธฐ

2021-08-15 ย  | ย  ๋ธ”๋กœ๊ทธ ์ธ์‚ฌ์ดํŠธ

post-img

์–ด๋Š๋•Œ์™€ ๋™์ผํ•˜๊ฒŒ ๋กœ์ปฌ์—์„œ ์—…๋ฐ์ดํŠธํ•œ ์ฝ”๋“œ๋ฅผ ๋‚ด ์›๊ฒฉ GitHub Repository์— push ํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ๊ฐ‘์ž๊ธฐ github์˜ ์ธ์ฆ ๊ด€๋ จ ์—๋Ÿฌ๊ฐ€ ํ„ฐ๋ฏธ๋„์„ ๋ฎ์—ˆ๋‹ค. ์—๋Ÿฌ์˜ ์š”์ง€๋Š” ์ด๋ ‡๋‹ค. '2021๋…„ 8์›” 13์ผ๋ถ€๋กœ GitHub ๊ณ„์ •์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ์›๊ฒฉ์˜ git ๋™์ž‘์„ ์ œ์–ดํ•˜๋Š” ๊ถŒํ•œ์„ ์ œํ•œํ•œ๋‹ค'๋Š” ๊ฒƒ์ด๋‹ค. ์ž‘๋…„ 7์›” GitHub Blog์— ๊ธ€๋กœ ๋ฏธ๋ฆฌ ๊ณต์ง€๋ฅผ ํ–ˆ๋‹ค๋Š”๋ฐ.. CLI๋ฅผ ํ†ตํ•ด์„œ https ์ฃผ์†Œ๋กœ GitHub ์›๊ฒฉ ์ €์žฅ์†Œ์— ์ ‘๊ทผํ•˜๋Š” ๋‚˜๋Š” ๋‹นํ™ฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์—†์—ˆ๋‹ค.

1

๊ทผ๋ฐ, ๊นƒํ—™ ๋ธ”๋กœ๊ทธ์— *'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์™€ ๊ฐ™์€ ํŒŒ์ผ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ ์ด ํŒŒ์ผ์ด ์—†๋‹ค๋ฉด ํ‚ค ์ƒ์„ฑ๊ธฐ๋กœ ํ‚ค๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

4

ํŒŒ์ผ์ด ์ด๋ฏธ ์ƒ์„ฑ๋˜์–ด ์žˆ๋‹ค๋ฉด 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 ๋ฒ„ํŠผ ํด๋ฆญ์œผ๋กœ ๋“ฑ๋กํ•˜๋ฉด ๋œ๋‹ค.

5

๋“ฑ๋ก์„ ์™„๋ฃŒํ–ˆ๋‹ค๋ฉด ๋กœ์ปฌ ํ„ฐ๋ฏธ๋„์—์„œ $ ssh -T git@github.com ๋ช…๋ น์–ด๋กœ SSH ๋ฐฉ์‹์˜ ์ธ์ฆ์ด ์ž˜ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

2

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 ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š”๋ฐ..' ๋ผ๋˜์ง€, '์•„ ๊นƒํ—™ ์ปค๋งจ๋“œ๋ผ์ธ ์ด์ œ ๋ชป์“ฐ๋‚˜?' ๋ผ๊ณ  ์‚ด์ง ํ˜ผ๋ž€์„ ๊ฒช์€ ๋ถ„์ด๋ผ๋ฉด ์ •๋ง ๋“ฑ๋ก ๊ณผ์ •์ด ๊ฐ„๋‹จํ•˜๋‹ˆ ๋น ๋ฅด๊ฒŒ ์‹œ๋„ํ•ด๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค!

์ฐธ๊ณ ํ•œ ๋ ˆํผ๋Ÿฐ์Šค

๋ชฉ์ฐจ

์ด์–ด์ง€๋Š” ๊ธ€,