SSH ํค ์ํธ ์ ๋ณด
SSH(Secure Shell Protocol)๋ฅผ ์ฌ์ฉํ์ฌ GitHub์ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๊ณ ์ธ ์ ์์ต๋๋ค. SSH๋ฅผ ํตํด ์ฐ๊ฒฐํ ๋ ๋ก์ปฌ ๋จธ์ ์์ ํ๋ผ์ด๋น ํค ํ์ผ์ ์ฌ์ฉํ์ฌ ์ธ์ฆํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ SSH ์ ๋ณด์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
SSH ํค๋ฅผ ์์ฑํ ๋ ์ํธ๋ฅผ ์ถ๊ฐํ์ฌ ํค๋ฅผ ์ถ๊ฐ๋ก ๋ณดํธํ ์ ์์ต๋๋ค. ํค๋ฅผ ์ฌ์ฉํ ๋๋ง๋ค ์ํธ๋ฅผ ์ ๋ ฅํด์ผ ํฉ๋๋ค. ํค์ ์ํธ๊ฐ ์๊ณ ํค๋ฅผ ์ฌ์ฉํ ๋๋ง๋ค ์ํธ๋ฅผ ์ ๋ ฅํ์ง ์์ผ๋ ค๋ ๊ฒฝ์ฐ SSH ์์ด์ ํธ์ ํค๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. SSH ์์ด์ ํธ๋ SSH ํค๋ฅผ ๊ด๋ฆฌํ๊ณ ์ํธ๋ฅผ ์ ์ฅํฉ๋๋ค.
SSH ํค๊ฐ ์์ง ์๋ ๊ฒฝ์ฐ ์ธ์ฆ์ ์ฌ์ฉํ ์ SSH ํค๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. SSH ํค๊ฐ ์ด๋ฏธ ์๋์ง ํ์คํ์ง ์์ ๊ฒฝ์ฐ ๊ธฐ์กด ํค๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ธฐ์กด SSH ํค ํ์ธ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
ํ๋์จ์ด ๋ณด์ ํค๋ฅผ ์ฌ์ฉํ์ฌ GitHub์ ์ธ์ฆํ๋ ค๋ฉด ํ๋์จ์ด ๋ณด์ ํค์ ๋ํ ์ SSH ํค๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ํค ์์ผ๋ก ์ธ์ฆํ ๋ ํ๋์จ์ด ๋ณด์ ํค๋ฅผ ์ปดํจํฐ์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ OpenSSH 8.2 ๋ฆด๋ฆฌ์ค ์ ๋ณด๋ฅผ ์ฐธ์กฐํ์ธ์.
์ SSH ํค ์์ฑ
๋ก์ปฌ ๋จธ์ ์์ ์ SSH ํค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ํค๋ฅผ ์์ฑํ ํ GitHub.com์ ๊ณ์ ์ ๊ณต๊ฐ ํค๋ฅผ ์ถ๊ฐํ์ฌ SSH๋ฅผ ํตํ Git ์์ ์ ๋ํ ์ธ์ฆ์ ์ฌ์ฉํ๋๋ก ์ค์ ํ ์ ์์ต๋๋ค.
์ฐธ๊ณ ํญ๋ชฉ
GitHub๋ 2022๋ 3์ 15์ผ์ ์ด์ ์ ์์ ํ์ง ์์ ํค ํ์์ ์ญ์ ํ์ฌ ๋ณด์์ ํฅ์์์ผฐ์ต๋๋ค.
ํด๋น ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก DSA ํค(ssh-dss
)๋ ๋ ์ด์ ์ง์๋์ง ์์ต๋๋ค. GitHub์์ ๊ฐ์ธ ๊ณ์ ์ ์ DSA ํค๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
valid_after
๊ฐ 2021๋
11์ 2์ผ ์ด์ ์ธ RSA ํค(ssh-rsa
)๋ ์๋ช
์๊ณ ๋ฆฌ์ฆ์ ๊ณ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํด๋น ๋ ์ง ์ดํ์ ์์ฑ๋ RSA ํค๋ SHA-2 ์๋ช
์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. SHA-2 ์๋ช
์ ์ฌ์ฉํ๋ ค๋ฉด ์ผ๋ถ ์ด์ ํด๋ผ์ด์ธํธ๋ฅผ ์
๊ทธ๋ ์ด๋ํด์ผ ํ ์ ์์ต๋๋ค.
-
ํฐ๋ฏธ๋ํฐ๋ฏธ๋Git Bash๋ฅผ ์ฝ๋๋ค.
-
์๋ ํ ์คํธ๋ฅผ ๋ถ์ฌ๋ฃ์ ํ ์์ ์์ ์ฌ์ฉํ ๋ฉ์ผ์ GitHub ๋ฉ์ผ ์ฃผ์๋ก ๋ฐ๊ฟ์ ๋ถ์ฌ๋ฃ์ต๋๋ค.
ssh-keygen -t ed25519 -C "your_email@example.com"
์ฐธ๊ณ ํญ๋ชฉ
Ed25519 ์๊ณ ๋ฆฌ์ฆ์ ์ง์ํ์ง ์๋ ๋ ๊ฑฐ์ ์์คํ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์์ ์ฌ์ฉํฉ๋๋ค.
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
๊ทธ๋ฌ๋ฉด ์ ๊ณต๋ ์ด๋ฉ์ผ์ ๋ ์ด๋ธ๋ก ์ฌ์ฉํ์ฌ ์ SSH ํค๊ฐ ์์ฑ๋ฉ๋๋ค.
> Generating public/private ALGORITHM key pair.
"ํค๋ฅผ ์ ์ฅํ ํ์ผ์ ์ ๋ ฅํ์ธ์"๋ผ๋ ํ๋กฌํํธ๊ฐ ํ์๋๋ฉด ์ ๋ ฅ ํค๋ฅผ ๋๋ฌ ๊ธฐ๋ณธ ํ์ผ ์์น๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค. ์ด์ ์ SSH ํค๋ฅผ ๋ง๋ ์ ์ด ์๋ ๊ฒฝ์ฐ ssh-keygen์ด ๋ค๋ฅธ ํค๋ฅผ ๋ค์ ์์ฑํ๋๋ก ์์ฒญํ ์ ์์ผ๋ฉฐ, ์ด ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ง์ ์ด๋ฆ์ ๊ฐ์ง SSH ํค๋ฅผ ๋ง๋๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ฅผ ์ํํ๋ ค๋ฉด ๋ณธ ํ์ผ ์์น๋ฅผ ์ ๋ ฅํ๊ณ id_ALGORITHM์ ์ฌ์ฉ์ ์ง์ ํค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
> Enter a file in which to save the key (/Users/YOU/.ssh/id_ALGORITHM): [Press enter]
> Enter file in which to save the key (/c/Users/YOU/.ssh/id_ALGORITHM):[Press enter]
> Enter a file in which to save the key (/home/YOU/.ssh/id_ALGORITHM):[Press enter]
-
ํ๋กฌํํธ์ ๋ณด์ ์ํธ๋ฅผ ์ ๋ ฅํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ SSH ํค ์ํธ ์ฌ์ฉ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
> Enter passphrase (empty for no passphrase): [Type a passphrase] > Enter same passphrase again: [Type passphrase again]
ssh-agent์ SSH ํค ์ถ๊ฐ
ํค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ssh-agent์ ์ SSH ํค๋ฅผ ์ถ๊ฐํ๊ธฐ ์ ์ ๊ธฐ์กด SSH ํค๋ฅผ ํ์ธํ๊ณ ์ SSH ํค๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ์์ด์ ํธ์ SSH ํค๋ฅผ ์ถ๊ฐํ ๋ macports, homebrew ๋๋ ๊ธฐํ ์ธ๋ถ ์๋ณธ์์ ์ค์นํ ์ ํ๋ฆฌ์ผ์ด์
์ด ์๋ ๊ธฐ๋ณธ macOS ssh-add
๋ช
๋ น์ ์ฌ์ฉํฉ๋๋ค.
-
๋ฐฑ๊ทธ๋ผ์ด๋์์ ssh-agent๋ฅผ ์์ํฉ๋๋ค.
$ eval "$(ssh-agent -s)" > Agent pid 59566
ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ช ๋ น์ ์ฌ์ฉํด์ผ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ssh-agent๋ฅผ ์์ํ๊ธฐ ์ ์
sudo -s -H
๋ฅผ ์คํํ์ฌ ๋ฃจํธ ์ก์ธ์ค๋ฅผ ์ฌ์ฉํด์ผ ํ๊ฑฐ๋exec ssh-agent bash
๋๋exec ssh-agent zsh
๋ฅผ ์ฌ์ฉํ์ฌ ssh-agent๋ฅผ ์คํํด์ผ ํ ์ ์์ต๋๋ค. -
macOS Sierra 10.12.2 ์ด์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ssh-agent์ ํค๋ฅผ ์๋์ผ๋ก ๋ก๋ํ๊ณ ํค ์งํฉ์ ์ํธ๋ฅผ ์ ์ฅํ๋๋ก
~/.ssh/config
ํ์ผ์ ์์ ํด์ผ ํฉ๋๋ค.-
๋จผ์
~/.ssh/config
ํ์ผ์ด ๊ธฐ๋ณธ ์์น์ ์๋์ง ํ์ธํฉ๋๋ค.$ open ~/.ssh/config > The file /Users/YOU/.ssh/config does not exist.
-
ํ์ผ์ด ์์ผ๋ฉด ํ์ผ์ ๋ง๋ญ๋๋ค.
touch ~/.ssh/config
-
~/.ssh/config
ํ์ผ์ ์ด๊ณ ๋ค์ ์ค์ ํฌํจํ๋๋ก ํ์ผ์ ์์ ํฉ๋๋ค. SSH ํค ํ์ผ์ ์์ ์ฝ๋์ ๋ค๋ฅธ ์ด๋ฆ ๋๋ ๊ฒฝ๋ก๊ฐ ์๋ ๊ฒฝ์ฐ ํ์ฌ ์ค์ ๊ณผ ์ผ์นํ๋๋ก ํ์ผ ์ด๋ฆ ๋๋ ๊ฒฝ๋ก๋ฅผ ์์ ํฉ๋๋ค.Text Host github.com AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_ed25519
Host github.com AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_ed25519
์ฐธ๊ณ ํญ๋ชฉ
- ํค์ ์ํธ๋ฅผ ์ถ๊ฐํ์ง ์๋๋ก ์ ํํ ๊ฒฝ์ฐ
UseKeychain
์ค์ ์๋ตํด์ผ ํฉ๋๋ค. Bad configuration option: usekeychain
์ค๋ฅ๊ฐ ํ์๋๋ฉด ๊ตฌ์ฑ์Host *.github.com
์น์ ์ ์ค์ ์ถ๊ฐํฉ๋๋ค.
Text Host github.com IgnoreUnknown UseKeychain
Host github.com IgnoreUnknown UseKeychain
- ํค์ ์ํธ๋ฅผ ์ถ๊ฐํ์ง ์๋๋ก ์ ํํ ๊ฒฝ์ฐ
-
-
ssh-agent์ SSH ํ๋ผ์ด๋น ํค๋ฅผ ์ถ๊ฐํ๊ณ ํค ์งํฉ์ ์ํธ๋ฅผ ์ ์ฅํฉ๋๋ค. ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ํค๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ด๋ฆ์ด ๋ค๋ฅธ ๊ธฐ์กด ํค๋ฅผ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ ๋ช ๋ น์ _id_ed25519_๋ฅผ ํ๋ผ์ด๋น ํค ํ์ผ์ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
์ฐธ๊ณ ํญ๋ชฉ
--apple-use-keychain
์ต์ ์ ssh-์์ด์ ํธ์ SSH ํค๋ฅผ ์ถ๊ฐํ ๋ ์ํธ๋ฅผ ํค ์ฒด์ธ์ ์ ์ฅํฉ๋๋ค. ํค์ ์ํธ๋ฅผ ์ถ๊ฐํ์ง ์๊ธฐ๋ก ์ ํํ ๊ฒฝ์ฐ--apple-use-keychain
์ต์ ์์ด ๋ช ๋ น์ ์คํํฉ๋๋ค.--apple-use-keychain
์ต์ ์ssh-add
์ Apple ํ์ค ๋ฒ์ ์ ์์ต๋๋ค. Monterey(12.0) ์ด์ ์ macOS ๋ฒ์ ์์--apple-use-keychain
๋ฐ--apple-load-keychain
ํ๋๊ทธ๋-K
์-A
๊ตฌ๋ฌธ์ ๊ฐ๊ฐ ์ฌ์ฉํ์ต๋๋ค.ssh-add
์ Apple ํ์ค ๋ฒ์ ์ด ์ค์น์น๋์ด ์์ง ์์ ๊ฒฝ์ฐ, ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ค๋ฅ: ssh-add: illegal option -- apple-use-keychain์(๋ฅผ) ์ฐธ์กฐํ์ธ์.์ํธ๋ฅผ ๋ฌป๋ ๋ฉ์์ง๊ฐ ๊ณ์ ํ์๋๋ฉด,
~/.zshrc
ํ์ผ(๋๋ bash์ฉ~/.bashrc
ํ์ผ)์ ๋ช ๋ น์ ์ถ๊ฐํด์ผ ํ ์ ์์ต๋๋ค. -
GitHub์ ๊ณ์ ์ SSH ํผ๋ธ๋ฆญ ํค๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub ๊ณ์ ์ ์ SSH ํค ์ถ๊ฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
GitHub Desktop์ด ์ค์น๋ ๊ฒฝ์ฐ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ณต์ ํ๊ณ SSH ํค๋ฅผ ์ฒ๋ฆฌํ์ง ์์ ์ ์์ต๋๋ค.
-
์ ์์น๋ ๊ด๋ฆฌ์ PowerShell ์ฐฝ์์ ssh-agent๊ฐ ์คํ ์ค์ธ์ง ํ์ธํฉ๋๋ค. SSH ํค ์ํธ ์ฌ์ฉ์ "ssh-agent ์๋ ์์" ๋ช ๋ น์ ์ฌ์ฉํ๊ฑฐ๋ ๋ค์๊ณผ ๊ฐ์ด ์๋์ผ๋ก ์์ํ ์ ์์ต๋๋ค.
# start the ssh-agent in the background Get-Service -Name ssh-agent | Set-Service -StartupType Manual Start-Service ssh-agent
-
์์น๋ ๊ถํ์ด ์๋ ํฐ๋ฏธ๋ ์ฐฝ์์ ssh-agent์ SSH ํ๋ผ์ด๋น ํค๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ํค๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ด๋ฆ์ด ๋ค๋ฅธ ๊ธฐ์กด ํค๋ฅผ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ ๋ช ๋ น์ _id_ed25519_๋ฅผ ํ๋ผ์ด๋น ํค ํ์ผ์ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
ssh-add c:/Users/YOU/.ssh/id_ed25519
-
GitHub์ ๊ณ์ ์ SSH ํผ๋ธ๋ฆญ ํค๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub ๊ณ์ ์ ์ SSH ํค ์ถ๊ฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
-
๋ฐฑ๊ทธ๋ผ์ด๋์์ ssh-agent๋ฅผ ์์ํฉ๋๋ค.
$ eval "$(ssh-agent -s)" > Agent pid 59566
ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ช ๋ น์ ์ฌ์ฉํด์ผ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ssh-agent๋ฅผ ์์ํ๊ธฐ ์ ์
sudo -s -H
๋ฅผ ์คํํ์ฌ ๋ฃจํธ ์ก์ธ์ค๋ฅผ ์ฌ์ฉํด์ผ ํ๊ฑฐ๋exec ssh-agent bash
๋๋exec ssh-agent zsh
๋ฅผ ์ฌ์ฉํ์ฌ ssh-agent๋ฅผ ์คํํด์ผ ํ ์ ์์ต๋๋ค. -
ssh-agent์ SSH ํ๋ผ์ด๋น ํค๋ฅผ ์ถ๊ฐํฉ๋๋ค.
๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ํค๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ด๋ฆ์ด ๋ค๋ฅธ ๊ธฐ์กด ํค๋ฅผ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ ๋ช ๋ น์ _id_ed25519_๋ฅผ ํ๋ผ์ด๋น ํค ํ์ผ์ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
ssh-add ~/.ssh/id_ed25519
-
GitHub์ ๊ณ์ ์ SSH ํผ๋ธ๋ฆญ ํค๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub ๊ณ์ ์ ์ SSH ํค ์ถ๊ฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
ํ๋์จ์ด ๋ณด์ ํค์ ๋ํ ์ SSH ํค ์์ฑ
macOS๋ Linux๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ SSH ํค๋ฅผ ์์ฑํ๊ธฐ ์ ์ SSH ํด๋ผ์ด์ธํธ๋ฅผ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ์ SSH ํด๋ผ์ด์ธํธ๋ฅผ ์ค์นํด์ผ ํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ค๋ฅ: ์ ์ ์๋ ํค ์ ํ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
-
์ปดํจํฐ์ ํ๋์จ์ด ๋ณด์ ํค๋ฅผ ์ฝ์ ํฉ๋๋ค.
-
ํฐ๋ฏธ๋ํฐ๋ฏธ๋Git Bash๋ฅผ ์ฝ๋๋ค.
-
์๋ ํ ์คํธ๋ฅผ ๋ถ์ฌ๋ฃ์ ํ ์์ ์ ๋ฉ์ผ ์ฃผ์๋ฅผ GitHub ๊ณ์ ๊ณผ ์ฐ๊ฒฐ๋ ๋ฉ์ผ ์ฃผ์๋ก ๋ฐ๊ฟ๋๋ค.
ssh-keygen -t ed25519-sk -C "your_email@example.com"
ssh-keygen -t ed25519-sk -C "your_email@example.com"
ssh-keygen -t ed25519-sk -C "your_email@example.com"
์ฐธ๊ณ ํญ๋ชฉ
๋ช ๋ น์ด ์คํจํ๊ณ
invalid format
๋๋feature not supported,
์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ Ed25519 ์๊ณ ๋ฆฌ์ฆ์ ์ง์ํ์ง ์๋ ํ๋์จ์ด ๋ณด์ ํค๋ฅผ ์ฌ์ฉํ๊ณ ์์ ์ ์์ต๋๋ค. ๋์ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค.ssh-keygen -t ecdsa-sk -C "your_email@example.com"
-
๋ฉ์์ง๊ฐ ํ์๋๋ฉด ํ๋์จ์ด ๋ณด์ ํค์ ๋จ์ถ๋ฅผ ํฐ์นํฉ๋๋ค.
-
โEnter a file in which to save the keyโ(ํค๋ฅผ ์ ์ฅํ ํ์ผ ์ ๋ ฅ)๋ผ๋ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด Enter ํค๋ฅผ ๋๋ฌ ๊ธฐ๋ณธ ํ์ผ ์์น๋ฅผ ์ ์ฉํฉ๋๋ค.
> Enter a file in which to save the key (/Users/YOU/.ssh/id_ed25519_sk): [Press enter]
> Enter a file in which to save the key (c:\Users\YOU\.ssh\id_ed25519_sk):[Press enter]
> Enter a file in which to save the key (/home/YOU/.ssh/id_ed25519_sk):[Press enter]
-
์ํธ๋ฅผ ์ ๋ ฅํ๋ผ๋ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด Enter ํค๋ฅผ ๋๋ฆ ๋๋ค.
> Enter passphrase (empty for no passphrase): [Type a passphrase] > Enter same passphrase again: [Type passphrase again]
-
GitHub์ ๊ณ์ ์ SSH ํผ๋ธ๋ฆญ ํค๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub ๊ณ์ ์ ์ SSH ํค ์ถ๊ฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.