Post

ssh key ๊ด€๋ฆฌ ํŒ

ssh key ๊ด€๋ฆฌ ํŒ

๐Ÿ”ง 1. SSH Key ๊ด€๋ฆฌ ํŒ

SSH Key๋Š” ์ƒ์„ฑ ํ›„์—๋„ ๊พธ์ค€ํ•œ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌ๊ฐ€ ์ œ๋Œ€๋กœ ๋˜์ง€ ์•Š์œผ๋ฉด ์˜คํžˆ๋ ค ๋ณด์•ˆ ํ—ˆ์ ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ—‚๏ธ 1) ์—ฌ๋Ÿฌ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ~/.ssh/config ํ™œ์šฉ

์—ฌ๋Ÿฌ ์›๊ฒฉ ์„œ๋ฒ„ ํ˜น์€ Git ๊ณ„์ •์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์•„๋ž˜์™€ ๊ฐ™์ด ํ‚ค๋งˆ๋‹ค ๋ณ„๋„ ์„ค์ • ๊ฐ€๋Šฅ:

1
2
3
4
5
6
7
8
9
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_github

Host company-server
    HostName 192.168.0.10
    User ubuntu
    IdentityFile ~/.ssh/id_rsa_company
  • Host: ์‚ฌ์šฉํ•  ๋ณ„์นญ (ssh ์ ‘์† ์‹œ ssh github.com์ฒ˜๋Ÿผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)
  • IdentityFile: ์—ฐ๊ฒฐ ์‹œ ์‚ฌ์šฉํ•  ๊ฐœ์ธํ‚ค ๊ฒฝ๋กœ ์ง€์ •

๐Ÿ”„ 2) ์ฃผ๊ธฐ์ ์ธ ํ‚ค ๊ต์ฒด

  • 6๊ฐœ์›”~1๋…„ ๋‹จ์œ„๋กœ ํ‚ค๋ฅผ ์žฌ๋ฐœ๊ธ‰ํ•˜๊ณ  ๊ต์ฒดํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์ง
  • ๋งŒ์•ฝ ํ‚ค๊ฐ€ ์œ ์ถœ๋˜์—ˆ๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ฒ˜๊ฐ€ ๋ช…ํ™•ํ•˜์ง€ ์•Š๋‹ค๋ฉด ์ฆ‰์‹œ ํ๊ธฐ

๐Ÿ”’ 3) ๊ฐœ์ธํ‚ค ๋ณดํ˜ธ ์ˆ˜์น™

  • ์ ˆ๋Œ€ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ์ด๋ฉ”์ผ๋กœ ์ „์†กํ•˜์ง€ ๋ง ๊ฒƒ
  • ํŒŒ์ผ ๊ถŒํ•œ์€ 600 (์ฝ๊ธฐ/์“ฐ๊ธฐ)๋กœ ์ œํ•œ
1
chmod 600 ~/.ssh/id_ed25519
  • ๊ฐ€๋Šฅํ•˜๋ฉด ํŒจ์Šคํ”„๋ ˆ์ด์ฆˆ๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ถ”๊ฐ€ ๋ณด์•ˆ ์ ์šฉ

๐Ÿงผ 4) ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ณต๊ฐœํ‚ค ์ •๋ฆฌ

  • ์„œ๋ฒ„์˜ ~/.ssh/authorized_keys ํŒŒ์ผ์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ‚ค๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ์‚ญ์ œ
  • ํ‚ค ์ฃผ์„(comment)์„ ์ž˜ ์ •๋ฆฌํ•ด๋‘๋ฉด ์–ด๋–ค ํ‚ค์ธ์ง€ ์‹๋ณ„์ด ์‰ฌ์›€

๐Ÿ“ ํ‚ค ์ฃผ์„(comment) ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•

SSH Key๋ฅผ ์ƒ์„ฑํ•  ๋•Œ -C ์˜ต์…˜์œผ๋กœ ์ฃผ์„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ฃผ์„์€ ๊ณต๊ฐœํ‚ค ํŒŒ์ผ์— ํฌํ•จ๋˜๋ฉฐ, ๋ˆ„๊ฐ€ ์–ด๋–ค ์šฉ๋„๋กœ ์ƒ์„ฑํ•œ ํ‚ค์ธ์ง€ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

1
ssh-keygen -t ed25519 -C "yuri@dev-machine-2025"

์ƒ์„ฑ๋œ ๊ณต๊ฐœํ‚ค ํŒŒ์ผ (id_ed25519.pub) ์˜ˆ:

1
ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKcJNk... yuri@dev-machine-2025

๋˜๋Š” ๋งŒ๋ฃŒ์ผ์„ ํฌํ•จํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค:

1
ssh-keygen -t ed25519 -C "yuri@laptop (expire:2025-12-31)"

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด authorized_keys ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•  ๋•Œ ๋ˆ„๊ตฌ์˜ ํ‚ค์ธ์ง€ ์‰ฝ๊ฒŒ ํ™•์ธํ•˜๊ณ  ๋งŒ๋ฃŒ ์‹œ์ ๋„ ํ•จ๊ป˜ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์„œ๋ฒ„์˜ ~/.ssh/authorized_keys ํŒŒ์ผ์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ‚ค๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ์‚ญ์ œ
  • ํ‚ค ์ฃผ์„(comment)์„ ์ž˜ ์ •๋ฆฌํ•ด๋‘๋ฉด ์–ด๋–ค ํ‚ค์ธ์ง€ ์‹๋ณ„์ด ์‰ฌ์›€

โœ… ์š”์•ฝ: SSH Key๋„ ์ž์‚ฐ์ฒ˜๋Ÿผ ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ๊ณผ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•ด ์ฒด๊ณ„์ ์ธ ๊ด€๋ฆฌ ์Šต๊ด€์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿข 2. ์‹ค๋ฌด ํ™˜๊ฒฝ์—์„œ์˜ SSH Key ๊ด€๋ฆฌ ์‚ฌ๋ก€

๊ธฐ์—…์ด๋‚˜ ์กฐ์ง์—์„œ๋Š” ์ˆ˜์‹ญ~์ˆ˜๋ฐฑ ๋ช…์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ์„œ๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, SSH Key ๊ด€๋ฆฌ ์ฒด๊ณ„๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ›๏ธ 1) ์ค‘์•™ ์ง‘์ค‘ํ˜• Key ๊ด€๋ฆฌ ๋„๊ตฌ ์‚ฌ์šฉ

  • HashiCorp Vault: Key ์ €์žฅ, ์ ‘๊ทผ ์ œ์–ด, ๋งŒ๋ฃŒ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ
  • AWS Secrets Manager / Parameter Store: IAM ๊ธฐ๋ฐ˜ ๊ถŒํ•œ ๊ด€๋ฆฌ์™€ ํ†ตํ•ฉ
  • Ansible + GitOps: ์„œ๋ฒ„ ์ ‘์† ํ‚ค๋ฅผ Git์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  Ansible๋กœ ๋ฐฐํฌ

๐Ÿ” 2) Key Rotation ์ •์ฑ… ์ˆ˜๋ฆฝ

  • ์ •๊ธฐ์ ์œผ๋กœ ํ‚ค๋ฅผ ํ๊ธฐํ•˜๊ณ  ์žฌ๋“ฑ๋กํ•˜๋Š” ๊ทœ์น™์„ ๋งˆ๋ จ
  • ํ‡ด์‚ฌ์ž๋‚˜ ์™ธ๋ถ€ ํ˜‘๋ ฅ์ž์˜ ์ ‘๊ทผ์„ ์ฆ‰์‹œ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž๋™ํ™”

๐Ÿ“‹ 3) ์ ‘์† ๋กœ๊ทธ ๋ฐ ๊ฐ์‚ฌ ๊ธฐ๋ก ํ™•๋ณด

  • SSH ์ ‘์† ์‹œ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ฒจ ๋ˆ„๊ฐ€ ์–ธ์ œ ์–ด๋–ค ์„œ๋ฒ„์— ์ ‘์†ํ–ˆ๋Š”์ง€ ์ถ”์  ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ
  • ๋ณด์•ˆ ์‚ฌ๊ณ  ๋ฐœ์ƒ ์‹œ ์ถ”์ ์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ

๐Ÿงฉ 4) LDAP ๋˜๋Š” SSO์™€์˜ ์—ฐ๋™

  • ์ง์› ๊ณ„์ •์ด LDAP ๋˜๋Š” SSO์— ์˜ํ•ด ๊ด€๋ฆฌ๋œ๋‹ค๋ฉด, SSH Key ์ ‘๊ทผ๊ถŒํ•œ๋„ ํ•ด๋‹น ์‹œ์Šคํ…œ๊ณผ ์—ฐ๋™
  • ๊ณ„์ • ๋น„ํ™œ์„ฑํ™” ์‹œ ์ž๋™์œผ๋กœ ํ‚ค ์ ‘๊ทผ๋„ ์ฐจ๋‹จ

๐Ÿ” ์‹ค์ œ ์‚ฌ๋ก€: ๋ชจ ๊ธฐ์—…์€ ํ‚ค ์ฃผ์„์— ์‚ฌ์šฉ์ž ์ด๋ฉ”์ผ๊ณผ ๋งŒ๋ฃŒ์ผ์„ ๋ช…์‹œํ•ด ๋‘๊ณ , ๋ฐฐ์น˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ๋งŒ๋ฃŒ๋œ ํ‚ค๋ฅผ ์ž๋™์œผ๋กœ ์ œ๊ฑฐํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๋„์ž…ํ•จ


This post is licensed under CC BY 4.0 by the author.