๋ฐ˜์‘ํ˜•

Credential ์ €์žฅ์†Œ / HTTPS ํ”„๋กœํ† ์ฝœ


Git ๋ฆฌ๋ชจํŠธ ์ €์žฅ์†Œ์™€ ํ†ต์‹ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์€ Git(๊ธฐ๋ณธ ํ”„๋กœํ† ์ฝœ), SSH, HTTPS ๋ฐฉ์‹์ด ์žˆ๋‹ค. Git ๊ธฐ๋ณธ ํ”„๋กœํ† ์ฝœ์€ ์ธ์ฆ ๊ธฐ๋Šฅ์ด ๋ฏธ์•ฝํ•˜์—ฌ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ์ฃผ๋กœ SSH๋‚˜ HTTPS๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

HTTPS ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋งค๋ฒˆ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ๋Š”๋ฐ Git์€ ์ด๋ฅผ ์œ„ํ•ด ์ธ์ฆ ์ •๋ณด๋ฅผ ์ €์žฅํ•ด๋‘๊ณ  ์ž๋™์œผ๋กœ ์ž…๋ ฅํ•ด์ฃผ๋Š” Credential ์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•œ๋‹ค. Credential ๊ธฐ๋Šฅ์—์„œ ์ œ๊ณตํ•˜๋Š” ์˜ต์…˜์€ ์•„๋ž˜ 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

 

  1. cache ๋ชจ๋“œ : ์ธ์ฆ์ •๋ณด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ž„์‹œ ์ €์žฅ(๊ธฐ๋ณธ 15๋ถ„)
  2. store ๋ชจ๋“œ : ์ธ์ฆ ์ •๋ณด๋ฅผ ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ Disk์— ์ €์žฅ. ์‚ฌ์šฉ์ž ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์— ์ผ๋ฐ˜ ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ์ €์žฅ๋˜๋ฏ€๋กœ ์ธ์ฆ ์ •๋ณด ๋…ธ์ถœ ์œ„ํ—˜ ์กด์žฌํ•œ๋‹ค.
  3. osxkeychain ๋ชจ๋“œ(macOS ์ „์šฉ) : ์ธ์ฆ ์ •๋ณด๋ฅผ ๋งฅ์˜ ํ‚ค์ฒด์ธ์— ์ €์žฅ. ์•”ํ˜ธํ™”๋ผ์„œ ์ €์žฅ๋˜๋ฏ€๋กœ ์•ˆ์ „ํ•˜๋‹ค.

 

๐Ÿ’ก macOS๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ osxkeychain ๋ชจ๋“œ๋กœ ์„ค์ •๋˜์–ด ์žˆ์–ด์„œ ๋”ฐ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

ํ„ฐ๋ฏธ๋„์—์„œ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด macOS์˜ ํ‚ค์ฒด์ธ์— ์ธ์ฆ ์ •๋ณด๋ฅผ ๋ณด๊ด€ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿผ ์ตœ์ดˆ ์ธ์ฆ์‹œ์—๋งŒ ์•„์ด๋””์™€ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ž…๋ ฅํ•œ ์ •๋ณด๊ฐ€ ํ‚ค์ฒด์ธ์— ๋ณด๊ด€๋œ๋‹ค. ์ดํ›„๋ถ€ํ„ด ์ด ํ‚ค์ฒด์ธ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•ด ์ž๋™์œผ๋กœ ์ธ์ฆ๋œ๋‹ค.

# osxkeychain ํ—ฌํผ๋ฅผ ์ธ์ฆ ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •
git config --global credential.helper osxkeychain

 

Git์˜ global configuration ๋ชฉ๋ก์„ ํ™•์ธํ•ด๋ณด๋ฉด credential.helper=osxkeychain ํ•ญ๋ชฉ์ด ์ถ”๊ฐ€๋œ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

# List only global configuration entries
git config --list --global

 

 

ํ‚ค์ฒด์ธ ์•ฑ์—์„œ github.com์„ ๊ฒ€์ƒ‰ํ•ด์„œ ์ž๋™์œผ๋กœ ๋“ฑ๋ก๋œ ์ธ์ฆ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

SSH ํ”„๋กœํ† ์ฝœ


๐Ÿ’ก SSH ๊ณต๊ฐœํ‚ค๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋“ฑ๋กํ•ด๋‘๋ฉด ๊นƒํ—™ ๋ฆฌ๋ชจํŠธ ์ €์žฅ์†Œ์™€ ํ†ต์‹ ํ•  ๋•Œ HTTPS ํ”„๋กœํ† ์ฝœ ์ธ์ฆ ๋ฐฉ์‹์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

๋ฐฐ๊ฒฝ ์ง€์‹

์•„๋ž˜์ฒ˜๋Ÿผ SSH ๋ฐฉ์‹์œผ๋กœ ๊นƒํ—™ ์ €์žฅ์†Œ๋ฅผ Cloneํ•˜๋ ค๋ฉด SSH ๊ณต๊ฐœํ‚ค๋ฅผ ๋งŒ๋“ค์–ด์„œ GitHub์— ๋“ฑ๋กํ•ด์•ผ ํ•œ๋‹ค.

 

 

SSH(Secure Shell)๋Š” ์›๊ฒฉ์ง€ ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ์ด๋ฆ„์—์„œ๋„ ์•Œ ์ˆ˜ ์žˆ๋“ฏ ์•ˆ์ „ํ•œ(๋ณด์•ˆ) Shell์ด๋‹ค. ์•”ํ˜ธํ™” ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ํ†ต์‹ ์ด ๋…ธ์ถœ๋ผ๋„ ์•”ํ˜ธํ™”๋œ ๋ฌธ์ž๋กœ๋งŒ ๋ณด์ธ๋‹ค. SSH๋Š” ์ฃผ๋กœ ๊ณต๊ฐœํ‚ค ์ธ์ฆ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

๐Ÿ’ก ๊ณต๊ฐœํ‚ค๋Š” ์ด๋ฆ„์ฒ˜๋Ÿผ ์–ด๋””์—๋“  ๊ณต๊ฐœ๋ผ๋„ ์ƒ๊ด€์—†๋‹ค. ๊ฐœ์ธํ‚ค๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ์ฒ˜๋Ÿผ ์ž์‹ ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๊ด€ํ•ด์•ผ ํ•œ๋‹ค. ๊ฐœ์ธํ‚ค๊ฐ€ ์žˆ์œผ๋ฉด ๊ณต๊ฐœํ‚ค๋ฅผ ๋“ฑ๋กํ•ด๋†“์€ SSH ์„œ๋ฒ„๋‚˜ Git ์„œ๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๊ณต๊ฐœํ‚ค ์ธ์ฆ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ณต๊ฐœํ‚ค์™€ ๊ฐœ์ธํ‚ค ํ•œ ์Œ์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ๊ณต๊ฐœํ‚ค๋Š” ์ ‘์†ํ•˜๋ ค๋Š” ์„œ๋ฒ„์— ๋“ฑ๋กํ•ด๋†“๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•œ๋‹ค. โžŠ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐœ์ธํ‚ค๋ฅผ ์ด์šฉํ•ด SSH์— ์ ‘์†ํ•˜๊ณ , โž‹์—ฐ๊ฒฐ ์š”์ฒญ์„ ๋ฐ›์€ SSH ์„œ๋ฒ„๋Š” ๋“ฑ๋ก๋œ ๊ณต๊ฐœํ‚ค ์ค‘ ์š”์ฒญ๋ฐ›์€ ๊ฐœ์ธํ‚ค ์ •๋ณด์™€ ๋งค์นญํ•˜๋Š” ๊ณต๊ฐœํ‚ค๊ฐ€ ์žˆ๋Š”์ง€ ์ฐพ๋Š”๋‹ค. โžŒ์—†์œผ๋ฉด ์„œ๋ฒ„ ์ ‘์†(์ธ์ฆ)์€ ์‹คํŒจํ•˜๊ณ , ์žˆ๋‹ค๋ฉด ์ธ์ฆ์„ ์„ฑ๊ณตํ•˜์—ฌ ์„œ๋ฒ„์— ์ ‘์†๋œ๋‹ค.

 

SSH ์ƒ์„ฑ ์—ฌ๋ถ€ ํ™•์ธ

SSH ํ‚ค๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์— ๊ธฐ์กด์— ์ƒ์„ฑํ•œ ํ‚ค๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณธ๋‹ค. ๊ธฐ์กด์— ์ƒ์„ฑํ•œ ํ‚ค๊ฐ€ ์žˆ๋Š” ์ƒํƒœ์—์„œ ํ‚ค๋ฅผ ๋˜ ๋ฐœ๊ธ‰ํ•˜๋ฉด ๊ธฐ์กด ํ‚ค๊ฐ€ ๋ฎ์–ด์”Œ์›Œ์ง€๋ฏ€๋กœ ์ฃผ์˜ํ•œ๋‹ค.

ls -al ~/.ssh

 

์•„๋ž˜ ํŒŒ์ผ์Œ์ด ์žˆ๋‹ค๋ฉด ์ด๋ฏธ ํ‚ค๋ฅผ ์ƒ์„ฑํ•œ์ ์ด ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. Key ์•”ํ˜ธํ™” ๋ฐฉ์‹์€ DSA, RSA, ECDSA, Ed25519 ๋“ฑ์ด ์žˆ๋Š”๋ฐ ์ฃผ๋กœ Ed25519๋ฅผ ์ถ”์ฒœํ•œ๋‹ค(์ฐธ๊ณ ๊ธ€)

 

  • id_ed25519 (๊ฐœ์ธํ‚ค) id_ed25519.pub (๊ณต๊ฐœํ‚ค)
  • id_rsa (๊ฐœ์ธํ‚ค) id_rsa.pub (๊ณต๊ฐœํ‚ค)

 

SSH Key ์ƒ์„ฑ

๐Ÿ’ก 1Password 8์— ์ถ”๊ฐ€๋œ SSH & Git ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด SSH ๊ฐœ์ธํ‚ค๋ฅผ ๋กœ์ปฌ์— ์ €์žฅํ•˜์ง€ ์•Š๊ณ ๋„ SSH ์ธ์ฆ์„ ํ•  ์ˆ˜ ์žˆ๊ณ ,  ~/.ssh/config ํŒŒ์ผ์— ์ผ์ผ์ด SSH ํ‚ค ๊ฒฝ๋กœ๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. 1Password์—์„œ ์ƒ์„ฑํ•œ SSH ํ‚ค๋Š” ๊ณต๊ฐœํ‚ค์™€ ํ•‘๊ฑฐ ํ”„๋ฆฐํŠธ๋ฅผ ํ•จ๊ป˜ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— GitHub ๊ฐ™์€ ์„œ๋น„์Šค์—์„œ ๊ณต๊ฐœํ‚ค ์ž๋™์™„์„ฑ ๊ธฐ๋Šฅ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋…ธํŠธ ๋งํฌ ์ฐธ๊ณ .

 

โถ ์œ ๋‹‰์Šค ๊ณ„์—ด์ธ macOS๋Š” OpenSSH๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ssh-keygen์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. -C ์˜ต์…˜(์ƒ์„ฑ๋œ ํ‚ค์— ์ฃผ์„ ์ถ”๊ฐ€)์˜ email@example.com ์—” ์ž์‹ ์˜ ์ด๋ฉ”์ผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค. -t ์˜ต์…˜์œผ๋กœ ํŠน์ • ํƒ€์ž…์˜ ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. -t ์˜ต์…˜์ด ์—†์œผ๋ฉด RSA Key๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

ssh-keygen -t ed25519 -C "email@example.com"

 

โท 1๋ฒˆ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ €์žฅ ์œ„์น˜๋ฅผ ๋ฌผ์–ด๋ณธ๋‹ค. ์—”ํ„ฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด ๊ธฐ๋ณธ ๊ฒฝ๋กœ(~/.ssh)์— ์ €์žฅ๋œ๋‹ค.

 

โธ ๊ทธ ๋‹ค์Œ SSH ๊ฐœ์ธํ‚ค์— ๋Œ€ํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ(Passphrase) ์ง€์ • ์—ฌ๋ถ€๋ฅผ ๋ฌผ์–ด๋ณธ๋‹ค. ์—”ํ„ฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด ํŒจ์Šค์›Œ๋“œ ์—†์ด ์‚ฌ์šฉํ•œ๋‹ค. Github์—์„  Passphrase ์„ค์ •์„ ๊ถŒ์žฅํ•˜๋ฏ€๋กœ ์™ ๋งŒํ•˜๋ฉด ์ง€์ •ํ•ด์ค€๋‹ค.

 

โน Key๊ฐ€ ์ž˜ ์ƒ์„ฑ๋๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ณต๊ฐœํ‚ค, ๊ฐœ์ธํ‚ค๋ฅผ ์ถœ๋ ฅํ•ด๋ณธ๋‹ค

cat ~/.ssh/id_ed25519 # ๊ฐœ์ธํ‚ค ์ถœ๋ ฅ
cat ~/.ssh/id_ed25519.pub # ๊ณต๊ฐœํ‚ค ์ถœ๋ ฅ

 

Github ๊ณ„์ •์— ๊ณต๊ฐœํ‚ค ๋“ฑ๋ก

โถ ๋จผ์ € ๊ณต๊ฐœํ‚ค๋ฅผ ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌํ•ด๋‘”๋‹ค

pbcopy < ~/.ssh/id_ed25519.pub

 

โท Github ์ ‘์† → Settings → SSH and GPG keys → New SSH Key ๋ฒ„ํŠผ ํด๋ฆญ ํ›„ ๊ณต๊ฐœํ‚ค ๋“ฑ๋ก

 

  • Title ํ•„๋“œ : ๋“ฑ๋กํ•˜๋ ค๋Š” ํ‚ค ์ด๋ฆ„ ์ž„์˜ ์ž…๋ ฅ
  • Key ํ•„๋“œ : ๋ณต์‚ฌํ•œ ๊ณต๊ฐœํ‚ค ๋ถ™์—ฌ๋„ฃ๊ธฐ

 

โธ SSH ๊ณต๊ฐœํ‚ค ๋“ฑ๋ก ํ›„ github.com/username.keys ์ฃผ์†Œ๋กœ ์ ‘์†ํ•˜๋ฉด ํ•ด๋‹น username์ด ๋“ฑ๋กํ•œ ๊ณต๊ฐœํ‚ค๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜๋Š” ๋น„ํƒˆ๋ฆฐ ๋ถ€ํ…Œ๋ฆฐ์˜ ๊ณต๊ฐœํ‚ค๋‹ค.

 

SSH ์ ‘์† ํ…Œ์ŠคํŠธ

โถ ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ GitHub ์ ‘์† ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณธ๋‹ค. SSH ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  You've successfully... ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜ค๋ฉด ์—ฐ๊ฒฐ ์„ฑ๊ณต

ssh -T git@github.com
# Enter passphrase for key '...':
# ...You've successfully authenticated, but GitHub does not provide shell access.

 

โท SSH ํ”„๋กœํ† ์ฝœ๋กœ Git ์ €์žฅ์†Œ ๋ณต์ œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณธ๋‹ค. git clone ๋ช…๋ น์–ด ๋’ค์— SSH ํ˜•์‹์˜ ์ €์žฅ์†Œ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค. SSH ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ž…๋ ฅ ํ›„ Git ์ €์žฅ์†Œ๊ฐ€ ๋กœ์ปฌ์— ํด๋ก ๋๋‹ค๋ฉด ์„ฑ๊ณต

 

 

git clone git@github.com:prettier/prettier.git
# Cloning into 'prettier/prettier'...
# Enter passphrase for key '...':

 

SSH ํŒจ์Šค์›Œ๋“œ ์ž…๋ ฅ ์ƒ๋žตํ•˜๊ธฐ

๋งค๋ฒˆ SSH ํŒจ์Šค์›Œ๋“œ(Passphrase)๋ฅผ ์ž…๋ ฅํ•˜๋ ค๋ฉด ๋ฒˆ๊ฑฐ๋กญ๋‹ค. ssh-agent ํ˜น์€ macOS ํ‚ค์ฒด์ธ์— ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ €์žฅํ•ด๋‘๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฒˆ๊ฑฐ๋กœ์›€์„ ํ•ด์†Œํ•  ์ˆ˜ ์žˆ๋‹ค.

 

SSH Agent์— SSH ํŒจ์Šค์›Œ๋“œ ๋“ฑ๋ก

ssh-agent๋Š” ํ„ฐ๋ฏธ๋„ ์„ธ์…˜๋‹น 1๋ฒˆ๋งŒ ์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด๋‘๋ฉด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์œ ์ง€์‹œ์ผœ ์ฃผ๋Š” ๋ฐ๋ชฌ์ด๋‹ค. ์ฒ˜์Œ ์—์ด์ „ํŠธ์— ์ถ”๊ฐ€ํ•  ๋•Œ ์ž…๋ ฅํ•œ ์•”ํ˜ธ๊ฐ€ ์ €์žฅ๋˜๊ณ  ๊ทธ ํ›„๋ถ€ํ„ด ์ž…๋ ฅํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

ssh-agent ์‹คํ–‰

eval $(ssh-agent)

 

ssh-agent์— ํ‚ค ๋“ฑ๋ก. ์ด๋•Œ SSH ํŒจ์Šค์›Œ๋“œ(passphrase)๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค

ssh-add ~/.ssh/id_ed25519
# Enter passphrase for key ...
# Identity added: ...

 

ssh-agent์— ๋“ฑ๋ก๋œ ํ‚ค ํ™•์ธ (ํ˜„์žฌ ๋กœ๋“œ๋œ ํ‚ค์˜ ํ•‘๊ฑฐ ํ”„๋ฆฐํŠธ ๋ฆฌ์ŠคํŠธ ํ™•์ธ)

ssh-add -l
# 256 SHA256:JfXX05P...

 

ํ‚ค์ฒด์ธ์— SSH ํŒจ์Šค์›Œ๋“œ ๋“ฑ๋ก (์ถ”์ฒœ) โญ๏ธ

๐Ÿ’ก Oh My Zsh์—์„œ ์ œ๊ณตํ•˜๋Š” ssh-agent ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ssh-agent๋ฅผ ์ž๋™์œผ๋กœ ์‹œ์ž‘ํ•˜๊ณ  ์ง€์ •ํ•œ ์ž๊ฒฉ ์ฆ๋ช…์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€๋Š” ~/.zshrc ํŒŒ์ผ์˜ plugins ๋ฐฐ์—ด์— ssh-agent๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค. ๋” ์ž์„ธํ•œ ์„ค์ • ๋ฐฉ๋ฒ•์€ ๋…ธํŠธ ์ฐธ๊ณ .

 

โถ ssh-add์˜ -K ์˜ต์…˜ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

ssh-add ๋ช…๋ น์–ด๋กœ ๊ฐœ์ธํ‚ค ๋“ฑ๋ก ์‹œ -K ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋ฉด SSH ํŒจ์Šค์›Œ๋“œ(passphrase)๋ฅผ ํ‚ค์ฒด์ธ์— ์ €์žฅํ•ด๋‘๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฒ˜์Œ ํ•œ ๋ฒˆ๋งŒ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ‚ค์ฒด์ธ์— ์ž๋™ ์ €์žฅ๋˜๊ณ , ๋‹ค์‹œ ๋ฌผ์–ด๋ณด์ง€ ์•Š๋Š”๋‹ค.

ssh-add -K ~/.ssh/id_ed25519
# Enter passphrase for key ...
# Identity added: ...

 

โท config ํŒŒ์ผ ํŽธ์ง‘ ๋ฐฉ๋ฒ• โญ๏ธ

AddKeysToAgent ์˜ต์…˜์€ ๊ฐœ์ธํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ ์‹œ์ ์— ํ•ด๋‹น ํ‚ค๋ฅผ ์—์ด์ „ํŠธ(ssh-agent)์— ์ถ”๊ฐ€ํ•œ๋‹ค. ์ฆ‰, ๊ฐœ์ธํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „๊นŒ์ง„ ์—์ด์ „ํŠธ์— ์ถ”๊ฐ€๋˜์ง€ ์•Š๋Š”๋‹ค.

 

  • `ssh-add -l` ๋ช…๋ น์–ด๋กœ ์—์ด์ „ํŠธ์— ์ถ”๊ฐ€๋œ ๊ฐœ์ธํ‚ค ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ssh-agent ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•˜๋ฉด(๋กœ๊ทธ์•„์›ƒ ๋“ฑ) ์—์ด์ „ํŠธ์— ์ถ”๊ฐ€๋œ ๋ชฉ๋ก์€ ์ดˆ๊ธฐํ™”๋œ๋‹ค.

 

`~/.ssh/config` ํŒŒ์ผ์— `UseKeychain`(ํ‚ค์ฒด์ธ ์‚ฌ์šฉ), `AddKeysToAgent`(์—์ด์ „ํŠธ์— ๊ฐœ์ธํ‚ค ์ถ”๊ฐ€) ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ด๋‘๋ฉด ์œ„ 1๋ฒˆ ๊ณผ์ •์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค. ๋จผ์ € ์›ํ•˜๋Š” ์—๋””ํ„ฐ๋กœ config ํŒŒ์ผ ํŽธ์ง‘์ฐฝ์„ ์—ฐ๋‹ค. 

nano ~/.ssh/config # Nano ์—๋””ํ„ฐ๋กœ config ํŒŒ์ผ ํŽธ์ง‘
code ~/.ssh/config # VSCode๋กœ config ํŒŒ์ผ ํŽธ์ง‘

 

config ํŒŒ์ผ ํŽธ์ง‘์ฐฝ์—์„œ ์•„๋ž˜ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ €์žฅํ•œ๋‹ค. ๊ฐœ์ธํ‚ค๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด `IdentityFile` ํ•ญ๋ชฉ๋งŒ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

# ~/.ssh/config ํŒŒ์ผ

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_ed25519
  IdentityFile ~/Documents/cert/private-aws-ec2-seoul.pem

 

VSCode์—์„œ ์›๊ฒฉ์œผ๋กœ AWS ์„œ๋ฒ„์— ์ ‘์† ์ƒํ™ฉ์ด๋ผ๋ฉด ๋ณ„๋„์˜ ํ˜ธ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ์•„๋ž˜์ฒ˜๋Ÿผ ์ถ”๊ฐ€ํ•ด๋‘๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ `ssh [ํ˜ธ์ŠคํŠธ์ด๋ฆ„]` ๋ช…๋ น์–ด๋กœ ๋ฐ”๋กœ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค. ex) `ssh private-aws-ec2-seoul`

 

๐Ÿ’ก HostName์„ ์ž…๋ ฅํ•˜์ง€ ์•Š์œผ๋ฉด Host ๊ฐ’์œผ๋กœ ๋Œ€์‹  ์„ค์ •๋œ๋‹ค

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_ed25519

# VSCode ์›๊ฒฉ ์ ‘์† ๋ฆฌ์ŠคํŠธ์— ๋ณด์—ฌ์งˆ ๋‚ด์šฉ
Host private-aws-ec2-seoul
  HostName ec2-88-888-88-888.ap-northeast-2.compute.amazonaws.com
  User ubuntu
  IdentityFile ~/Documents/cert/private-aws-ec2-seoul.pem

 

์œ„ ๋ฐฉ๋ฒ•์œผ๋กœ SSH ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ–ˆ๋‹ค๋ฉด ํ‚ค์ฒด์ธ ์•ฑ์— ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋œ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๋ ˆํผ๋Ÿฐ์Šค


 


๊ธ€ ์ˆ˜์ •์‚ฌํ•ญ์€ ๋…ธ์…˜ ํŽ˜์ด์ง€์— ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”
๋ฐ˜์‘ํ˜•