๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT

[Github] SSH ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ณ„์ • ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•

by ๐Ÿ’ฒ๐ŸŽตโœ–๏ธโœ”๏ธโ˜ผ 2022. 11. 3.
728x90

์—ฌ๋Ÿฌ GitHub ๊ณ„์ •์„ SSH๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•

๊ฐœ์š”

์—ฌ๋Ÿฌ ๊ฐœ์˜ GitHub ๊ณ„์ •์„ ํ•˜๋‚˜์˜ ๋จธ์‹ ์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๊ฒฝ์šฐ, SSH๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐ ๊ณ„์ •์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์—์„œ๋Š” SSH ํ‚ค ์ƒ์„ฑ๋ถ€ํ„ฐ GitHub ๊ณ„์ •์— ๋“ฑ๋ก, ssh-agent๋ฅผ ํ†ตํ•œ ํ‚ค ๋“ฑ๋ก, SSH ์„ค์ • ํŒŒ์ผ ์ž‘์„ฑ, ๊ทธ๋ฆฌ๊ณ  ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ์˜ ๋ณต์‚ฌ๊นŒ์ง€์˜ ์ „์ฒด ๊ณผ์ •์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

1. SSH๋ž€?

SSH(Secure Shell)๋Š” ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ์—์„œ ๋ณด์•ˆ ์ฑ„๋„์„ ํ†ตํ•ด ์•”ํ˜ธํ™”๋œ ํ†ต์‹ ์„ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์›๊ฒฉ ๋จธ์‹ ์— ์•ˆ์ „ํ•˜๊ฒŒ ์ ‘์†ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. SSH ํ‚ค ์ƒ์„ฑ

2.1 ๊ธฐ์กด SSH ํ‚ค ํ™•์ธ

$ ls -al ~/.ssh

2.2 SSH ํ‚ค ์ƒ์„ฑ

$ ssh-keygen -t rsa

์ƒ์„ฑํ•œ ํ‚ค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ํ™•์ธ๋˜๋Š”์ง€ ๋‹ค์‹œ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

$ ls -al ~/.ssh

3. GitHub ๊ณ„์ •์— SSH ํ‚ค ๋“ฑ๋ก

์ƒ์„ฑํ•œ ํ‚ค๋ฅผ GitHub ๊ณ„์ •์— ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.

$ pbcopy < ~/.ssh/id_rsa.pub

GitHub ํ”„๋กœํ•„ > Settings > SSH and GPG keys > New SSH Key์—์„œ ํ‚ค๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ GitHub ๊ณ„์ •๋„ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

4. ssh-agent์— ํ‚ค ๋“ฑ๋ก

$ ssh-add ~/.ssh/id_rsa

ssh-agent๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

$ eval "$(ssh-agent -s)"

4.1 ๋“ฑ๋ก๋œ ํ‚ค ์‚ญ์ œ

$ ssh-add -D

5. SSH ์„ค์ • ํŒŒ์ผ ์ž‘์„ฑ

$ vi ~/.ssh/config
# ๊ฐœ์ธ ๊ณ„์ •
Host github.com
   HostName github.com
   User git
   IdentityFile ~/.ssh/id_rsa

# ์—…๋ฌด ๊ณ„์ •
Host github.com-work
   HostName github.com
   User git
   IdentityFile ~/.ssh/id_rsa_work

6. GitHub ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ ๋ณต์‚ฌ

HTTPS ๋Œ€์‹  SSH๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

$ git clone git@github.com:userName/userRepository.git

์—…๋ฌด์šฉ ๊ณ„์ •์œผ๋กœ ๋ณต์‚ฌ ์‹œ์—๋Š” ์„ค์ •ํ•œ github.com-work๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

$ git clone git@github.com-work:workerName/workerRepository.git

์ด๋ฏธ HTTPS๋กœ ๋ณต์‚ฌํ•œ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ๋ฅผ SSH๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$ git remote -v
$ git remote set-url origin git@github.com-work:workerName/workerRepository.git

7. ๋กœ์ปฌ์—์„œ ์ƒˆ ์ €์žฅ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ

$ git remote add origin git@github.com-work:workerName/workerRepository.git

8. ํ”„๋กœ์ ํŠธ๋ณ„ gitconfig ์„ค์ •

์ „์—ญ ์„ค์ •์—์„œ ํ”„๋กœ์ ํŠธ ๋ณ„๋กœ ์„ค์ •์„ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด ~/.gitconfig ํŒŒ์ผ์— includeIf๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

[user]
 name = user
 email = user@mail.com

[includeIf "gitdir:~/workspace/project1"]
 path = ~/workspace/project1/.git/config

[includeIf "gitdir:~/workspace/project2"]
 path = ~/workspace/project2/.git/config

๋งˆ์น˜๋ฉฐ

์ด๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜์˜ ๋จธ์‹ ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ GitHub ๊ณ„์ •์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด SSH๋ฅผ ํ†ตํ•œ ๋ณด์•ˆ์„ฑ ๋†’์€ ์ ‘๊ทผ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ž‘์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€