์ฌ๋ฌ 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๋ฅผ ํตํ ๋ณด์์ฑ ๋์ ์ ๊ทผ์ ์ ์งํ๋ฉด์ ์์ ์ ์งํํ ์ ์์ต๋๋ค.
'IT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐ์ดํฐ ๊ตฌ์กฐ] ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linked lists) (0) | 2022.11.03 |
---|---|
[DATABASE] ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค์ด๋? (0) | 2022.11.03 |
[๋ฐ์ดํฐ ๊ตฌ์กฐ] ์ฌ๊ท(recursive) ๋? (0) | 2022.11.03 |
[๊ฐ์ฒด์งํฅ ์ค๊ณ] Solid ์์น (0) | 2022.11.03 |
[Linux] How to install NVIDIA Driver on Centos 8 (0) | 2022.11.03 |
๋๊ธ