[์ ‘์†] ์›๊ฒฉ ๊ฐœ๋ฐœ์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์—†์ด ์ ‘์†ํ•˜๊ธฐ (SSH/VSCODE ์›๊ฒฉ ์ ‘์†)

Posted by Euisuk's Dev Log on August 20, 2025

[์ ‘์†] ์›๊ฒฉ ๊ฐœ๋ฐœ์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์—†์ด ์ ‘์†ํ•˜๊ธฐ (SSH/VSCODE ์›๊ฒฉ ์ ‘์†)

์›๋ณธ ๊ฒŒ์‹œ๊ธ€: https://velog.io/@euisuk-chung/์›๊ฒฉ์—์„œ-๋น„๋ฐ€๋ฒˆํ˜ธ-์—†์ด-์ ‘์†ํ•˜๊ธฐ

SSH Remote Connection

https://code.visualstudio.com/docs/remote/ssh

๋งค๋ฒˆ ๋ฆฌ๋ˆ…์Šค ์„œ๋ฒ„์— ์ ‘์†ํ•  ๋•Œ๋งˆ๋‹ค ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์€ ์ƒ๊ฐ๋ณด๋‹ค ํฐ ์ŠคํŠธ๋ ˆ์Šค์ž…๋‹ˆ๋‹ค. ํŠนํžˆ VS Code๋กœ ์›๊ฒฉ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ํ•˜๋ฃจ์—๋„ ์ˆ˜์‹ญ ๋ฒˆ์”ฉ ์žฌ์ ‘์†ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ๋”๋”์šฑ ๊ทธ๋ ‡์ฃ . ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Windows ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ Linux ์›๊ฒฉ ์„œ๋ฒ„๋กœ SSH Key ์ธ์ฆ์„ ์„ค์ •ํ•˜์—ฌ, ๋น„๋ฐ€๋ฒˆํ˜ธ ์—†์ด ์•ˆ์ „ํ•˜๊ณ  ํŽธ๋ฆฌํ•˜๊ฒŒ ์ž๋™ ๋กœ๊ทธ์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹จ๊ณ„๋ณ„๋กœ ์ƒ์„ธํžˆ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.


๋ชฉ์ฐจ

  1. SSH Key ์ธ์ฆ์˜ ์ดํ•ด
  2. SSH Key๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 
  3. ์‹ค๋ฌด ํ•ต์‹ฌ ๊ฐ€์ด๋“œ๋ผ์ธ
  4. Windows์—์„œ SSH Key ์ƒ์„ฑํ•˜๊ธฐ
  5. Linux ์„œ๋ฒ„์— ๊ณต๊ฐœํ‚ค ๋“ฑ๋กํ•˜๊ธฐ
  6. VS Code Remote-SSH ์„ค์ •ํ•˜๊ธฐ
  7. Passphrase์™€ SSH Agent ํ™œ์šฉํ•˜๊ธฐ
  8. ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ๊ฐ€์ด๋“œ
  9. ์ „์ฒด ํ”„๋กœ์„ธ์Šค ์š”์•ฝ

  1. SSH Key ์ธ์ฆ์˜ ์ดํ•ด

SSH Key์˜ ๊ธฐ๋ณธ ์›๋ฆฌ

SSH Key ์ธ์ฆ์€ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋Œ€์‹  ์•”ํ˜ธํ™” ํ‚ค ์Œ์œผ๋กœ ์‹ ์›์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋น„๋Œ€์นญ ์•”ํ˜ธํ™”(Asymmetric Cryptography) ๊ธฐ์ˆ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ๋‘ ๊ฐœ์˜ ์ˆ˜ํ•™์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ํ‚ค๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

SSH Key Pair Concept

https://www.cloudpanel.io/blog/what-are-ssh-keys/

๊ตฌ์„ฑ ์š”์†Œ:

  • Private Key (๋น„๋ฐ€ํ‚ค)

    • ํŒŒ์ผ๋ช… ์˜ˆ์‹œ: id_rsa, id_ed25519
    • ์ €์žฅ ์œ„์น˜: ํด๋ผ์ด์–ธํŠธ(Windows PC)์˜ C:\Users\<์‚ฌ์šฉ์ž๋ช…>\.ssh\
    • ํŠน์ง•: ์ ˆ๋Œ€ ์™ธ๋ถ€์— ์œ ์ถœ๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๋Š” ๊ฐœ์ธ ์†Œ์œ  ํ‚ค
    • ์—ญํ• : ์„œ๋ฒ„์— ๋Œ€ํ•œ ์ธ์ฆ ์š”์ฒญ ์‹œ ๋””์ง€ํ„ธ ์„œ๋ช… ์ƒ์„ฑ
  • Public Key (๊ณต๊ฐœํ‚ค)

    • ํŒŒ์ผ๋ช… ์˜ˆ์‹œ: id_rsa.pub, id_ed25519.pub
    • ์ €์žฅ ์œ„์น˜: ์„œ๋ฒ„(Linux)์˜ ~/.ssh/authorized_keys ํŒŒ์ผ ๋‚ด๋ถ€
    • ํŠน์ง•: ๊ณต๊ฐœ๋˜์–ด๋„ ์•ˆ์ „ํ•˜๋ฉฐ, ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ณต์‚ฌ ๊ฐ€๋Šฅ
    • ์—ญํ• : ํด๋ผ์ด์–ธํŠธ์˜ ๋น„๋ฐ€ํ‚ค๋กœ ์ƒ์„ฑ๋œ ์„œ๋ช…์„ ๊ฒ€์ฆ

์ธ์ฆ ํ”„๋กœ์„ธ์Šค

SSH Authentication Flow

https://www.adsmurai.com/en/articles/how-to-generate-secure-ssh-keys

  1. ์ ‘์† ์‹œ๋„: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— SSH ์—ฐ๊ฒฐ ์š”์ฒญ
  2. ๊ณต๊ฐœํ‚ค ํ™•์ธ: ์„œ๋ฒ„๊ฐ€ authorized_keys์—์„œ ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ๊ณต๊ฐœํ‚ค ๊ฒ€์ƒ‰
  3. ์ฑŒ๋ฆฐ์ง€ ๋ฐœ์†ก: ์„œ๋ฒ„๊ฐ€ ๋ฌด์ž‘์œ„ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „์†ก
  4. ์„œ๋ช… ์ƒ์„ฑ: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋น„๋ฐ€ํ‚ค๋กœ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ๋””์ง€ํ„ธ ์„œ๋ช…
  5. ์„œ๋ช… ๊ฒ€์ฆ: ์„œ๋ฒ„๊ฐ€ ๊ณต๊ฐœํ‚ค๋กœ ์„œ๋ช…์„ ๊ฒ€์ฆํ•˜์—ฌ ์ธ์ฆ ์™„๋ฃŒ

์ด ๋ฐฉ์‹์€ ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ(Man-in-the-Middle Attack)์— ๊ฐ•ํ•˜๊ณ , ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž… ๊ณต๊ฒฉ(Brute Force)์œผ๋กœ๋ถ€ํ„ฐ๋„ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.


  1. SSH Key๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

๋ณด์•ˆ์„ฑ ์ธก๋ฉด

๊ฐ•๋ ฅํ•œ ์•”ํ˜ธํ™” ๊ฐ•๋„

  • ํ˜„๋Œ€์˜ SSH Key ์•Œ๊ณ ๋ฆฌ์ฆ˜(ํŠนํžˆ Ed25519)์€ ์ˆ˜ํ•™์ ์œผ๋กœ ํ•ด๋…์ด ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค
  • 4096bit RSA ํ‚ค๋Š” ํ˜„์žฌ ๊ธฐ์ˆ ๋กœ ํ•ด๋…ํ•˜๋Š” ๋ฐ ์ˆ˜๋ฐฑ ๋…„์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค
  • ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์‚ฌ์ „ ๊ณต๊ฒฉ, ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž… ๊ณต๊ฒฉ์— ์ทจ์•ฝํ•˜์ง€๋งŒ ํ‚ค๋Š” ์‚ฌ์‹ค์ƒ ๋ฉด์—ญ์ž…๋‹ˆ๋‹ค

ํ”ผ์‹ฑ ๋ฐฉ์ง€

  • ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ž…๋ ฅํ•˜๋ฏ€๋กœ ํ‚ค๋กœ๊ฑฐ๋‚˜ ํ”ผ์‹ฑ ์‚ฌ์ดํŠธ์— ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • SSH Key๋Š” ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์กด์žฌํ•˜๋ฏ€๋กœ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ํƒˆ์ทจํ•˜์ง€ ์•Š๋Š” ํ•œ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค

ํŽธ์˜์„ฑ ์ธก๋ฉด

์ž๋™ํ™” ์นœํ™”์ 

  • CI/CD ํŒŒ์ดํ”„๋ผ์ธ, ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ ๋“ฑ์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ ์—†์ด ์ž๋™ ์‹คํ–‰ ๊ฐ€๋Šฅ
  • ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋™์ผํ•œ ๊ณต๊ฐœํ‚ค๋ฅผ ๋ฐฐํฌํ•˜์—ฌ ํ•˜๋‚˜์˜ ๋น„๋ฐ€ํ‚ค๋กœ ๋ชจ๋‘ ์ ‘๊ทผ ๊ฐ€๋Šฅ

๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ

  • VS Code Remote-SSH๋กœ ์ž‘์—… ์‹œ ์žฌ์ ‘์† ์‹œ๋งˆ๋‹ค ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ ๋ถˆํ•„์š”
  • Git ์ž‘์—…, ์„œ๋ฒ„ ๊ฐ„ ํŒŒ์ผ ์ „์†ก(scp, rsync) ๋“ฑ์ด ๋งค๋„๋Ÿฝ๊ฒŒ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค

๊ด€๋ฆฌ ์šฉ์ด์„ฑ

์„ธ๋ฐ€ํ•œ ์ ‘๊ทผ ์ œ์–ด

  • ํ”„๋กœ์ ํŠธ๋ณ„, ํŒ€์›๋ณ„๋กœ ๋‹ค๋ฅธ ํ‚ค๋ฅผ ๋ฐœ๊ธ‰ํ•˜์—ฌ ๊ถŒํ•œ ๋ถ„๋ฆฌ ๊ฐ€๋Šฅ
  • ํŠน์ • ํ‚ค๊ฐ€ ์œ ์ถœ๋˜์—ˆ์„ ๋•Œ ํ•ด๋‹น ๊ณต๊ฐœํ‚ค๋งŒ ์„œ๋ฒ„์—์„œ ์ œ๊ฑฐํ•˜๋ฉด ์ฆ‰์‹œ ์ ‘๊ทผ ์ฐจ๋‹จ

  1. ์‹ค๋ฌด ํ•ต์‹ฌ ๊ฐ€์ด๋“œ๋ผ์ธ

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํƒ ๊ธฐ์ค€

Ed25519 (๊ถŒ์žฅ)

  • ์ƒ์„ฑ ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ํ‚ค ๊ธธ์ด๊ฐ€ ์งง์œผ๋ฉด์„œ๋„ ๋ณด์•ˆ์„ฑ์ด ๋›ฐ์–ด๋‚จ
  • ํ˜„๋Œ€ ์•”ํ˜ธํ•™ ํ‘œ์ค€์— ๋ถ€ํ•ฉํ•˜๋ฉฐ, ๋Œ€๋ถ€๋ถ„์˜ ์ตœ์‹  ์‹œ์Šคํ…œ์—์„œ ์ง€์›
  • ๊ณ ์ • ๊ธธ์ด(256bit)๋กœ -b ์˜ต์…˜ ๋ถˆํ•„์š”
1
2
# Ed25519 ํ‚ค ์ƒ์„ฑ (๊ถŒ์žฅ)
ssh-keygen -t ed25519 -C "your_email@example.com"

RSA 4096bit (ํ˜ธํ™˜์„ฑ ์šฐ์„  ์‹œ)

  • ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์ด๋‚˜ ์˜ค๋ž˜๋œ ์„œ๋ฒ„์™€์˜ ํ˜ธํ™˜์„ฑ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ
  • ๊ธฐ๋ณธ๊ฐ’(2048bit)๋ณด๋‹ค ์•ˆ์ „ํ•œ 4096bit ์‚ฌ์šฉ ๊ถŒ์žฅ
1
2
# RSA 4096bit ํ‚ค ์ƒ์„ฑ
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

RSA -b ์˜ต์…˜์˜ ์˜๋ฏธ

  • -b๋Š” ๋น„ํŠธ(bit) ๊ธธ์ด๋ฅผ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค
  • RSA ํ‚ค๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ํฐ ์†Œ์ˆ˜(prime number)์˜ ๊ณฑ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋ฉฐ, ์ด ์ˆซ์ž์˜ ํฌ๊ธฐ๋ฅผ ๋น„ํŠธ๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค
  • ๊ธธ์ˆ˜๋ก ์•ˆ์ „ํ•˜์ง€๋งŒ ์—ฐ์‚ฐ ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค
ํ‚ค ๊ธธ์ด ๋ณด์•ˆ ์ˆ˜์ค€ ๊ถŒ์žฅ ์‚ฌํ•ญ
2048bit ๊ธฐ๋ณธ ์ตœ์†Œ ์š”๊ตฌ์‚ฌํ•ญ
4096bit ๊ฐ•ํ™” ๊ถŒ์žฅ ์„ค์ •
8192bit ๋งค์šฐ ๊ฐ•ํ•จ ๊ณผ๋„ํ•จ (์„ฑ๋Šฅ ์ €ํ•˜)

๋ณด์•ˆ ๊ฐ•ํ™” ์›์น™

Passphrase ์‚ฌ์šฉ

  • ๋น„๋ฐ€ํ‚ค ํŒŒ์ผ ์ž์ฒด๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” ์ถ”๊ฐ€ ๋ณดํ˜ธ์ธต
  • ๋น„๋ฐ€ํ‚ค๊ฐ€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์œ ์ถœ๋˜์–ด๋„ passphrase ์—†์ด๋Š” ์‚ฌ์šฉ ๋ถˆ๊ฐ€
  • SSH Agent์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ํŽธ์˜์„ฑ ์œ ์ง€ ๊ฐ€๋Šฅ

์—„๊ฒฉํ•œ ํŒŒ์ผ ๊ถŒํ•œ

๊ฒฝ๋กœ/ํŒŒ์ผ Windows Linux ์„ค๋ช…
.ssh ๋””๋ ‰ํ† ๋ฆฌ ํ˜„์žฌ ์‚ฌ์šฉ์ž๋งŒ 700 ์†Œ์œ ์ž๋งŒ ์ฝ๊ธฐ/์“ฐ๊ธฐ/์‹คํ–‰
๋น„๋ฐ€ํ‚ค ํŒŒ์ผ ํ˜„์žฌ ์‚ฌ์šฉ์ž๋งŒ 600 ์†Œ์œ ์ž๋งŒ ์ฝ๊ธฐ/์“ฐ๊ธฐ
๊ณต๊ฐœํ‚ค ํŒŒ์ผ ์ œํ•œ ์—†์Œ 644 ๋ชจ๋‘ ์ฝ๊ธฐ, ์†Œ์œ ์ž๋งŒ ์“ฐ๊ธฐ
authorized_keys - 600 ์†Œ์œ ์ž๋งŒ ์ฝ๊ธฐ/์“ฐ๊ธฐ

ํ‚ค ๊ฒฉ๋ฆฌ ์ „๋žต

  • ๊ฐœ์ธ์šฉ, ํšŒ์‚ฌ์šฉ, ํ”„๋กœ์ ํŠธ์šฉ ๋“ฑ ์šฉ๋„๋ณ„๋กœ ๋ณ„๋„ ํ‚ค ์ƒ์„ฑ
  • ~/.ssh/config์—์„œ ํ˜ธ์ŠคํŠธ๋ณ„๋กœ ๋‹ค๋ฅธ ํ‚ค ์ง€์ • ๊ฐ€๋Šฅ

  1. Windows์—์„œ SSH Key ์ƒ์„ฑํ•˜๊ธฐ

์‚ฌ์ „ ์ค€๋น„์‚ฌํ•ญ

OpenSSH ํด๋ผ์ด์–ธํŠธ ํ™•์ธ

Windows 10(1809 ์ด์ƒ) ๋ฐ Windows 11์—๋Š” OpenSSH ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ธฐ๋ณธ ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. PowerShell์—์„œ ํ™•์ธ:

1
2
3
4
5
6
# OpenSSH ์„ค์น˜ ํ™•์ธ
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Client*'

# ์ถœ๋ ฅ ์˜ˆ์‹œ:
# Name  : OpenSSH.Client~~~~0.0.1.0
# State : Installed

๋งŒ์•ฝ ์„ค์น˜๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด:

1
2
# OpenSSH ํด๋ผ์ด์–ธํŠธ ์„ค์น˜
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

ํ‚ค ์ƒ์„ฑ ํ”„๋กœ์„ธ์Šค

Step 1: PowerShell ์‹คํ–‰

  • Win + X โ†’ โ€œWindows PowerShellโ€ ๋˜๋Š” โ€œํ„ฐ๋ฏธ๋„โ€ ์„ ํƒ
  • ๊ด€๋ฆฌ์ž ๊ถŒํ•œ ๋ถˆํ•„์š” (์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰)

Step 2: ํ‚ค ์ƒ์„ฑ ๋ช…๋ น ์‹คํ–‰

1
2
# Ed25519 ํ‚ค ์ƒ์„ฑ (๊ถŒ์žฅ)
ssh-keygen -t ed25519 -C "myemail@company.com"

๋˜๋Š” RSA ์‚ฌ์šฉ ์‹œ:

1
2
# RSA 4096bit ํ‚ค ์ƒ์„ฑ
ssh-keygen -t rsa -b 4096 -C "myemail@company.com"

์˜ต์…˜ ์„ค๋ช…:

  • -t: ํ‚ค ํƒ€์ž… ์ง€์ • (ed25519 ๋˜๋Š” rsa)
  • -b: ๋น„ํŠธ ๊ธธ์ด (RSA๋งŒ ํ•ด๋‹น, Ed25519๋Š” ๊ณ ์ • 256bit)
  • -C: ์ฃผ์„(Comment) ์ถ”๊ฐ€ - ๋ณดํ†ต ์ด๋ฉ”์ผ ์ฃผ์†Œ๋‚˜ ์„ค๋ช… ์ž…๋ ฅ

Step 3: ๋Œ€ํ™”ํ˜• ํ”„๋กฌํ”„ํŠธ ์‘๋‹ต

1
2
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\YourName/.ssh/id_ed25519):
  • ํŒŒ์ผ ์ €์žฅ ์œ„์น˜: ๊ทธ๋ƒฅ Enter (๊ธฐ๋ณธ ๊ฒฝ๋กœ ์‚ฌ์šฉ)
    • Ed25519: C:\Users\<์‚ฌ์šฉ์ž๋ช…>\.ssh\id_ed25519
    • RSA: C:\Users\<์‚ฌ์šฉ์ž๋ช…>\.ssh\id_rsa
1
Enter passphrase (empty for no passphrase):
  • Passphrase ์ž…๋ ฅ:
    • ๋ณด์•ˆ ๊ฐ•ํ™”๋ฅผ ์›ํ•˜๋ฉด ๊ฐ•๋ ฅํ•œ ์•”ํ˜ธ ์ž…๋ ฅ (์ตœ์†Œ 12์ž ์ด์ƒ ๊ถŒ์žฅ)
    • ํŽธ์˜์„ฑ ์šฐ์„ ์ด๋ฉด ๊ทธ๋ƒฅ Enter (๋น„์›Œ๋‘ )
    • ๊ถŒ์žฅ: Passphrase ์„ค์ • + SSH Agent ์‚ฌ์šฉ
1
Enter same passphrase again:
  • ๋™์ผํ•œ passphrase ์žฌ์ž…๋ ฅ

Step 4: ์ƒ์„ฑ ์™„๋ฃŒ ํ™•์ธ

1
2
3
4
5
6
7
8
9
10
Your identification has been saved in C:\Users\YourName/.ssh/id_ed25519.
Your public key has been saved in C:\Users\YourName/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:abcd1234... myemail@company.com
The key's randomart image is:
+--[ED25519 256]--+
|    .o+          |
|   . =.o         |
|    = B +        |
...

์ƒ์„ฑ๋œ ํŒŒ์ผ ํ™•์ธ:

1
2
3
4
5
6
7
8
# .ssh ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์šฉ ํ™•์ธ
dir $env:USERPROFILE\.ssh

# ์ถœ๋ ฅ ์˜ˆ์‹œ:
# Mode                 LastWriteTime         Length Name
# ----                 -------------         ------ ----
# -a---          2025-10-01  ์˜ค์ „ 9:30            464 id_ed25519
# -a---          2025-10-01  ์˜ค์ „ 9:30            103 id_ed25519.pub

์ฃผ์„(Comment) ์—†์ด ์ƒ์„ฑํ•˜๊ธฐ

์ฃผ์„์ด ํ•„์š” ์—†๊ฑฐ๋‚˜ ๋‚˜์ค‘์— ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด -C ์˜ต์…˜ ์ƒ๋žต:

1
ssh-keygen -t ed25519

์ด ๊ฒฝ์šฐ ๊ณต๊ฐœํ‚ค ๋งˆ์ง€๋ง‰์— ์ฃผ์„์ด ๋ถ™์ง€ ์•Š๊ฑฐ๋‚˜ Windows ์‚ฌ์šฉ์ž๋ช…์ด ์ž๋™์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.


  1. Linux ์„œ๋ฒ„์— ๊ณต๊ฐœํ‚ค ๋“ฑ๋กํ•˜๊ธฐ

๊ณต๊ฐœํ‚ค ๋‚ด์šฉ ํ™•์ธ

Windows PowerShell์—์„œ ๊ณต๊ฐœํ‚ค ๋‚ด์šฉ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค:

1
2
3
4
5
# Ed25519 ๊ณต๊ฐœํ‚ค ๋‚ด์šฉ ์ถœ๋ ฅ
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub

# RSA ์‚ฌ์šฉ ์‹œ
Get-Content $env:USERPROFILE\.ssh\id_rsa.pub

์ถœ๋ ฅ ์˜ˆ์‹œ:

1
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJqL9Zv8... myemail@company.com

์ด ์ „์ฒด ๋ฌธ์ž์—ด์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค (Ctrl+C).

Linux ์„œ๋ฒ„์—์„œ ๋“ฑ๋ก ์ž‘์—…

๋ฐฉ๋ฒ• 1: ๊ธฐ์กด ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ SSH ์ ‘์† ํ›„ ๋“ฑ๋ก

Windows PowerShell์—์„œ:

1
2
# Linux ์„œ๋ฒ„์— ์ ‘์† (๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ ํ•„์š”)
ssh ubuntu@192.168.1.100

Linux ์„œ๋ฒ„ ํ„ฐ๋ฏธ๋„์—์„œ:

1
2
3
4
5
6
7
8
# .ssh ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ (์ด๋ฏธ ์žˆ์œผ๋ฉด ๋ฌด์‹œ๋จ)
mkdir -p ~/.ssh

# ๋””๋ ‰ํ† ๋ฆฌ ๊ถŒํ•œ ์„ค์ •
chmod 700 ~/.ssh

# authorized_keys ํŒŒ์ผ์— ๊ณต๊ฐœํ‚ค ์ถ”๊ฐ€
cat >> ~/.ssh/authorized_keys

์ด์ œ ์ปค์„œ๊ฐ€ ์ž…๋ ฅ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋ณ€ํ•ฉ๋‹ˆ๋‹ค.

  • Windows์—์„œ ๋ณต์‚ฌํ•œ ๊ณต๊ฐœํ‚ค๋ฅผ ๋ถ™์—ฌ๋„ฃ๊ธฐ (์šฐํด๋ฆญ ๋˜๋Š” Shift+Insert)
  • Enter ํ•œ ๋ฒˆ
  • Ctrl + D ๋ˆŒ๋Ÿฌ ์ž…๋ ฅ ์ข…๋ฃŒ
1
2
3
4
5
# ํŒŒ์ผ ๊ถŒํ•œ ์„ค์ •
chmod 600 ~/.ssh/authorized_keys

# ๋‚ด์šฉ ํ™•์ธ
cat ~/.ssh/authorized_keys

๋ฐฉ๋ฒ• 2: ์›๊ฒฉ ๋ช…๋ น์œผ๋กœ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌ

Windows PowerShell์—์„œ ํ•œ ์ค„๋กœ ์‹คํ–‰:

1
2
# ๊ณต๊ฐœํ‚ค๋ฅผ ์„œ๋ฒ„๋กœ ์ „์†กํ•˜์—ฌ ๋“ฑ๋ก
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh ubuntu@192.168.1.100 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

์ด ๋ช…๋ น์€:

  1. ๋กœ์ปฌ์˜ ๊ณต๊ฐœํ‚ค ๋‚ด์šฉ์„ ์ฝ์–ด์„œ
  2. SSH๋กœ ์„œ๋ฒ„์— ์ „์†กํ•˜๋ฉฐ
  3. ์„œ๋ฒ„์—์„œ .ssh ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ, ๊ถŒํ•œ ์„ค์ •, ๊ณต๊ฐœํ‚ค ์ถ”๊ฐ€๋ฅผ ์ž๋™ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค

๋ฐฉ๋ฒ• 3: SCP๋กœ ํŒŒ์ผ ์ „์†ก ํ›„ ์ถ”๊ฐ€

1
2
# ๊ณต๊ฐœํ‚ค ํŒŒ์ผ์„ ์„œ๋ฒ„๋กœ ๋ณต์‚ฌ
scp $env:USERPROFILE\.ssh\id_ed25519.pub ubuntu@192.168.1.100:~/temp_key.pub

Linux ์„œ๋ฒ„์—์„œ:

1
2
3
4
5
6
# ์ „์†ก๋œ ํŒŒ์ผ์„ authorized_keys์— ์ถ”๊ฐ€
mkdir -p ~/.ssh
cat ~/temp_key.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
rm ~/temp_key.pub  # ์ž„์‹œ ํŒŒ์ผ ์‚ญ์ œ

์ฃผ์˜์‚ฌํ•ญ

  • >์™€ >>์˜ ์ฐจ์ด: >๋Š” ํŒŒ์ผ์„ ๋ฎ์–ด์“ฐ๊ณ , >>๋Š” ํŒŒ์ผ ๋์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ํ‚ค๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ >>๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
  • ์—ฌ๋Ÿฌ ์ค„ ์ถ”๊ฐ€ ๊ธˆ์ง€: ๊ณต๊ฐœํ‚ค๋Š” ํ•œ ์ค„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ค„๋ฐ”๊ฟˆ์ด ๋“ค์–ด๊ฐ€๋ฉด ์ธ์ฆ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
  • ๊ถŒํ•œ ๋ฌธ์ œ: Linux SSH ์„œ๋ฒ„๋Š” .ssh ๋””๋ ‰ํ† ๋ฆฌ์™€ authorized_keys ํŒŒ์ผ ๊ถŒํ•œ์ด ๋„ˆ๋ฌด ์—ด๋ ค์žˆ์œผ๋ฉด ๋ณด์•ˆ์ƒ ์ธ์ฆ์„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค.

  1. VS Code Remote-SSH ์„ค์ •ํ•˜๊ธฐ

VS Code ํ™•์žฅ ์„ค์น˜

  1. VS Code ์‹คํ–‰
  2. ์ขŒ์ธก ์‚ฌ์ด๋“œ๋ฐ”์—์„œ ํ™•์žฅ(Extensions) ์•„์ด์ฝ˜ ํด๋ฆญ (Ctrl+Shift+X)
  3. โ€œRemote - SSHโ€ ๊ฒ€์ƒ‰
  4. Microsoft์—์„œ ์ œ๊ณตํ•˜๋Š” โ€œRemote - SSHโ€ ํ™•์žฅ ์„ค์น˜
  5. ํ•จ๊ป˜ ์„ค์น˜๋˜๋Š” โ€œRemote - SSH: Editing Configuration Filesโ€ ํ™•์žฅ๋„ ์ž๋™ ์„ค์น˜๋จ

SSH Config ํŒŒ์ผ ์ž‘์„ฑ

Step 1: Config ํŒŒ์ผ ์ƒ์„ฑ/ํŽธ์ง‘

VS Code์—์„œ:

  1. F1 ๋˜๋Š” Ctrl+Shift+P๋กœ ๋ช…๋ น ํŒ”๋ ˆํŠธ ์—ด๊ธฐ
  2. โ€œRemote-SSH: Open SSH Configuration Fileโ€ฆโ€ ์ž…๋ ฅ
  3. C:\Users\<์‚ฌ์šฉ์ž๋ช…>\.ssh\config ์„ ํƒ

๋˜๋Š” PowerShell์—์„œ ์ง์ ‘:

1
2
# Config ํŒŒ์ผ์„ VS Code๋กœ ์—ด๊ธฐ
code $env:USERPROFILE\.ssh\config

Step 2: ํ˜ธ์ŠคํŠธ ์„ค์ • ์ถ”๊ฐ€

๋‹ค์Œ ๋‚ด์šฉ์„ ์ž…๋ ฅ:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์„ค์ •
Host dev-server
    HostName 192.168.1.100
    User ubuntu
    IdentityFile C:\Users\YourName\.ssh\id_ed25519
    AddKeysToAgent yes
    IdentitiesOnly yes
    ServerAliveInterval 60
    ServerAliveCountMax 3

# ํ”„๋กœ๋•์…˜ ์„œ๋ฒ„ ์„ค์ • (๋‹ค๋ฅธ ํ‚ค ์‚ฌ์šฉ ์˜ˆ์‹œ)
Host prod-server
    HostName 203.0.113.50
    User admin
    Port 2222
    IdentityFile C:\Users\YourName\.ssh\id_rsa_production
    AddKeysToAgent yes
    IdentitiesOnly yes

์„ค์ • ํ•ญ๋ชฉ ์ƒ์„ธ ์„ค๋ช…:

ํ•ญ๋ชฉ ํ•„์ˆ˜ ์—ฌ๋ถ€ ์„ค๋ช…
Host ํ•„์ˆ˜ ์ ‘์† ์‹œ ์‚ฌ์šฉํ•  ๋ณ„์นญ (์ž์œ ๋กญ๊ฒŒ ์ง€์ •)
HostName ํ•„์ˆ˜ ์‹ค์ œ ์„œ๋ฒ„ IP ์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ
User ํ•„์ˆ˜ ์„œ๋ฒ„ ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž๋ช…
IdentityFile ๊ถŒ์žฅ ์‚ฌ์šฉํ•  ๋น„๋ฐ€ํ‚ค ํŒŒ์ผ ๊ฒฝ๋กœ (์ ˆ๋Œ€ ๊ฒฝ๋กœ ๊ถŒ์žฅ)
Port ์„ ํƒ SSH ํฌํŠธ (๊ธฐ๋ณธ๊ฐ’ 22, ๋ณ€๊ฒฝ ์‹œ ๋ช…์‹œ)
AddKeysToAgent ๊ถŒ์žฅ SSH Agent์— ํ‚ค ์ž๋™ ์ถ”๊ฐ€ (yes ๊ถŒ์žฅ)
IdentitiesOnly ๊ถŒ์žฅ ์ง€์ •ํ•œ ํ‚ค๋งŒ ์‚ฌ์šฉ (yes ๊ถŒ์žฅ)
ServerAliveInterval ์„ ํƒ ์„œ๋ฒ„์— keepalive ์‹ ํ˜ธ ์ „์†ก ๊ฐ„๊ฒฉ(์ดˆ)
ServerAliveCountMax ์„ ํƒ keepalive ์‹คํŒจ ํ—ˆ์šฉ ํšŸ์ˆ˜

๊ฒฝ๋กœ ํ‘œ๊ธฐ ์ฃผ์˜์‚ฌํ•ญ:

  • Windows์—์„œ๋Š” ๋ฐฑ์Šฌ๋ž˜์‹œ(\) ๋˜๋Š” ์Šฌ๋ž˜์‹œ(/) ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ๊ณต๋ฐฑ์ด ํฌํ•จ๋œ ๊ฒฝ๋กœ๋Š” ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ธ๊ธฐ: "C:\Program Files\..."
  • ~๋Š” Windows PowerShell SSH์—์„œ ์ง€์›ํ•˜์ง€๋งŒ, ์ ˆ๋Œ€ ๊ฒฝ๋กœ ๊ถŒ์žฅ

VS Code์—์„œ ์ ‘์†ํ•˜๊ธฐ

๋ฐฉ๋ฒ• 1: ๋ช…๋ น ํŒ”๋ ˆํŠธ ์‚ฌ์šฉ

  1. F1 ๋˜๋Š” Ctrl+Shift+P
  2. โ€œRemote-SSH: Connect to Hostโ€ฆโ€ ์ž…๋ ฅ
  3. Config์— ์ •์˜ํ•œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ์„ ํƒ (์˜ˆ: dev-server)
  4. ์ƒˆ ์ฐฝ์ด ์—ด๋ฆฌ๋ฉฐ ์ž๋™ ์ ‘์† ์‹œ๋„
  5. ์ตœ์ดˆ ์ ‘์† ์‹œ Fingerprint ํ™•์ธ ํŒ์—… โ†’ โ€œContinueโ€ ํด๋ฆญ
  6. Passphrase ์„ค์ • ์‹œ ํ•œ ๋ฒˆ๋งŒ ์ž…๋ ฅ (SSH Agent ์‚ฌ์šฉ ์‹œ)

๋ฐฉ๋ฒ• 2: ์ขŒ์ธก ์‚ฌ์ด๋“œ๋ฐ” ์‚ฌ์šฉ

  1. ์ขŒ์ธก ์‚ฌ์ด๋“œ๋ฐ”์—์„œ โ€œRemote Explorerโ€ ์•„์ด์ฝ˜ ํด๋ฆญ
  2. โ€œSSH Targetsโ€ ์„น์…˜์—์„œ ํ˜ธ์ŠคํŠธ ํ™•์ธ
  3. ํ˜ธ์ŠคํŠธ ์šฐํด๋ฆญ โ†’ โ€œConnect to Host in Current Windowโ€ ๋˜๋Š” โ€œConnect to Host in New Windowโ€

์ ‘์† ์™„๋ฃŒ ํ™•์ธ

์„ฑ๊ณต ์‹œ VS Code ์ขŒ์ธก ํ•˜๋‹จ ์ƒํƒœ๋ฐ”์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ:

1
SSH: dev-server

์ด์ œ VS Code ํ„ฐ๋ฏธ๋„์€ ์ž๋™์œผ๋กœ Linux ์„œ๋ฒ„ ํ™˜๊ฒฝ์ด ๋˜๋ฉฐ, ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ๋„ ์„œ๋ฒ„์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ํŽธ์˜ ๊ธฐ๋Šฅ

ํฌํŠธ ํฌ์›Œ๋”ฉ ์„ค์ •

๊ฐœ๋ฐœ ์„œ๋ฒ„์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(์˜ˆ: ํฌํŠธ 8000)์„ ๋กœ์ปฌ์—์„œ ์ ‘๊ทผํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด:

1
2
3
Host dev-server
    ...
    LocalForward 8000 localhost:8000

์ด์ œ ๋กœ์ปฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:8000 ์ ‘์† ์‹œ ์„œ๋ฒ„์˜ 8000 ํฌํŠธ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

ProxyJump๋ฅผ ํ†ตํ•œ ๋‹ค๋‹จ๊ณ„ ์ ‘์†

Bastion ์„œ๋ฒ„๋ฅผ ๊ฑฐ์ณ ๋‚ด๋ถ€ ์„œ๋ฒ„์— ์ ‘์†ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ:

1
2
3
4
5
6
7
8
9
10
Host bastion
    HostName 203.0.113.10
    User ubuntu
    IdentityFile C:\Users\YourName\.ssh\id_ed25519

Host internal-server
    HostName 10.0.1.50
    User ubuntu
    ProxyJump bastion
    IdentityFile C:\Users\YourName\.ssh\id_ed25519

  1. Passphrase์™€ SSH Agent ํ™œ์šฉํ•˜๊ธฐ

Passphrase์˜ ํ•„์š”์„ฑ

Passphrase๋Š” ๋น„๋ฐ€ํ‚ค ํŒŒ์ผ ์ž์ฒด๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” ์ถ”๊ฐ€ ๋ณด์•ˆ ๊ณ„์ธต์ž…๋‹ˆ๋‹ค.

์žฅ์ :

  • ๋น„๋ฐ€ํ‚ค ํŒŒ์ผ์ด ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์œ ์ถœ๋˜์–ด๋„ passphrase ์—†์ด๋Š” ์‚ฌ์šฉ ๋ถˆ๊ฐ€
  • ๋…ธํŠธ๋ถ ๋ถ„์‹ค, ๋ฐฑ์—… ํŒŒ์ผ ์œ ์ถœ ๋“ฑ์˜ ์ƒํ™ฉ์—์„œ ๋ณดํ˜ธ

๋‹จ์ :

  • ๋งค๋ฒˆ SSH ์ ‘์† ์‹œ passphrase ์ž…๋ ฅ ํ•„์š” (SSH Agent ์—†์ด๋Š” ๋ถˆํŽธ)

SSH Agent๋ž€?

SSH Agent๋Š” ๋น„๋ฐ€ํ‚ค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์•ˆ์ „ํ•˜๊ฒŒ ์บ์‹ฑํ•˜์—ฌ, passphrase๋ฅผ ์„ธ์…˜๋‹น ํ•œ ๋ฒˆ๋งŒ ์ž…๋ ฅํ•˜๋„๋ก ํ•˜๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

Windows์—์„œ SSH Agent ์„ค์ •

Step 1: SSH Agent ์„œ๋น„์Šค ํ™œ์„ฑํ™”

PowerShell์„ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰:

1
2
3
4
5
6
7
8
# SSH Agent ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ
Get-Service ssh-agent

# ์„œ๋น„์Šค ์‹œ์ž‘
Start-Service ssh-agent

# ์‹œ์Šคํ…œ ๋ถ€ํŒ… ์‹œ ์ž๋™ ์‹œ์ž‘ ์„ค์ •
Set-Service -Name ssh-agent -StartupType Automatic

Step 2: ๋น„๋ฐ€ํ‚ค ๋“ฑ๋ก

์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ๊ถŒํ•œ PowerShell์—์„œ:

1
2
3
4
5
6
7
# ๋น„๋ฐ€ํ‚ค๋ฅผ SSH Agent์— ์ถ”๊ฐ€
ssh-add $env:USERPROFILE\.ssh\id_ed25519

# Passphrase ์„ค์ • ์‹œ ํ”„๋กฌํ”„ํŠธ ๋‚˜ํƒ€๋‚จ
Enter passphrase for C:\Users\YourName/.ssh/id_ed25519:
# (passphrase ์ž…๋ ฅ)
Identity added: C:\Users\YourName/.ssh/id_ed25519 (myemail@company.com)

Step 3: ๋“ฑ๋ก๋œ ํ‚ค ํ™•์ธ

1
2
3
4
5
# ํ˜„์žฌ Agent์— ๋“ฑ๋ก๋œ ํ‚ค ๋ชฉ๋ก
ssh-add -l

# ์ถœ๋ ฅ ์˜ˆ์‹œ:
# 256 SHA256:abcd1234... myemail@company.com (ED25519)

VS Code Config์— Agent ์„ค์ • ์ถ”๊ฐ€

~/.ssh/config ํŒŒ์ผ์— AddKeysToAgent yes ์ถ”๊ฐ€ ์‹œ, VS Code ์ ‘์† ์‹œ ์ž๋™์œผ๋กœ Agent์— ํ‚ค ๋“ฑ๋ก:

1
2
3
Host dev-server
    ...
    AddKeysToAgent yes

์„ธ์…˜ ์ข…๋ฃŒ ์‹œ ์ฒ˜๋ฆฌ

SSH Agent๋Š” Windows ๋กœ๊ทธ์•„์›ƒ ์‹œ๊นŒ์ง€ ํ‚ค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ์„ ์œ„ํ•ด ๋ช…์‹œ์ ์œผ๋กœ ์ œ๊ฑฐํ•˜๋ ค๋ฉด:

1
2
3
4
5
# Agent์—์„œ ํŠน์ • ํ‚ค ์ œ๊ฑฐ
ssh-add -d $env:USERPROFILE\.ssh\id_ed25519

# Agent์—์„œ ๋ชจ๋“  ํ‚ค ์ œ๊ฑฐ
ssh-add -D

  1. ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ๊ฐ€์ด๋“œ

๋ฌธ์ œ 1: โ€œPermission denied (publickey)โ€

์ฆ์ƒ:

1
ubuntu@192.168.1.100: Permission denied (publickey).

์›์ธ ๋ฐ ํ•ด๊ฒฐ:

  1. ๊ณต๊ฐœํ‚ค๊ฐ€ ์„œ๋ฒ„์— ์ œ๋Œ€๋กœ ๋“ฑ๋ก๋˜์ง€ ์•Š์Œ

    1
    2
    3
    
    # Linux ์„œ๋ฒ„์—์„œ ํ™•์ธ
    cat ~/.ssh/authorized_keys
    # ๊ณต๊ฐœํ‚ค ๋‚ด์šฉ์ด ์ •ํ™•ํžˆ ํ•œ ์ค„๋กœ ๋“ค์–ด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
    
  2. ์„œ๋ฒ„ ํŒŒ์ผ ๊ถŒํ•œ ๋ฌธ์ œ

    1
    2
    3
    
    # Linux ์„œ๋ฒ„์—์„œ ๊ถŒํ•œ ์žฌ์„ค์ •
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    
  3. ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ ๊ถŒํ•œ ๋ฌธ์ œ

    1
    2
    
    # ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ์“ฐ๊ธฐ ๊ถŒํ•œ์„ ๊ฐ€์ง€๋ฉด ์•ˆ ๋จ
    chmod 755 ~
    
  4. SELinux ์ปจํ…์ŠคํŠธ ์˜ค๋ฅ˜ (CentOS/RHEL)

    1
    
    restorecon -R -v ~/.ssh
    

๋ฌธ์ œ 2: โ€œWARNING: UNPROTECTED PRIVATE KEY FILE!โ€

์ฆ์ƒ (Git Bash/WSL์—์„œ):

1
2
3
4
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'C:/Users/YourName/.ssh/id_ed25519' are too open.

์›์ธ:
Windows NTFS ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ Git Bash/WSL์˜ ๊ถŒํ•œ ํ•ด์„ ์ฐจ์ด

ํ•ด๊ฒฐ:

Git Bash์—์„œ:

1
2
# ๋น„๋ฐ€ํ‚ค ํŒŒ์ผ ๊ถŒํ•œ ๋ณ€๊ฒฝ
chmod 600 ~/.ssh/id_ed25519

WSL์—์„œ:

1
2
# Windows ํŒŒ์ผ์‹œ์Šคํ…œ ๊ถŒํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ
sudo chmod 600 /mnt/c/Users/YourName/.ssh/id_ed25519

PowerShell์—์„œ๋Š” ์ด ๊ฒฝ๊ณ ๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (Windows ์ž์ฒด ๊ถŒํ•œ ์‹œ์Šคํ…œ ์‚ฌ์šฉ).

๋ฌธ์ œ 3: VS Code ์ ‘์† ์‹œ ๋ฌดํ•œ ๋กœ๋”ฉ

์ฆ์ƒ:
โ€œSetting up SSH Host dev-server: Downloading VS Code Serverโ€ฆโ€ ์—์„œ ๋ฉˆ์ถค

์›์ธ ๋ฐ ํ•ด๊ฒฐ:

  1. ์„œ๋ฒ„์˜ ๋””์Šคํฌ ์šฉ๋Ÿ‰ ๋ถ€์กฑ

    1
    2
    3
    
    # Linux ์„œ๋ฒ„์—์„œ ํ™•์ธ
    df -h
    # /home ํŒŒํ‹ฐ์…˜์ด ๊ฝ‰ ์ฐผ๋‹ค๋ฉด ์ •๋ฆฌ ํ•„์š”
    
  2. ๋ฐฉํ™”๋ฒฝ/๋„คํŠธ์›Œํฌ ๋ฌธ์ œ

    • VS Code Server๋Š” ๋‹ค์šด๋กœ๋“œ๋ฅผ ์œ„ํ•ด GitHub/Microsoft CDN ์ ‘๊ทผ ํ•„์š”
    • ์„œ๋ฒ„์—์„œ ์™ธ๋ถ€ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ ํ™•์ธ:
    1
    
    curl -I https://update.code.visualstudio.com
    
  3. VS Code Server ์บ์‹œ ์‚ญ์ œ

    1
    2
    
    # Linux ์„œ๋ฒ„์—์„œ
    rm -rf ~/.vscode-server
    

๋ฌธ์ œ 4: Passphrase๋ฅผ ๊ณ„์† ๋ฌผ์–ด๋ด„

์ฆ์ƒ:
SSH Agent์— ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋Š”๋ฐ๋„ ๋งค๋ฒˆ passphrase ์ž…๋ ฅ ์š”๊ตฌ

์›์ธ ๋ฐ ํ•ด๊ฒฐ:

  1. SSH Agent๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธ

    1
    2
    
    Get-Service ssh-agent
    # Status๊ฐ€ Running์ด ์•„๋‹ˆ๋ฉด Start-Service ssh-agent
    
  2. ํ‚ค๊ฐ€ Agent์— ๋“ฑ๋ก๋˜์—ˆ๋Š”์ง€ ํ™•์ธ

    1
    2
    
    ssh-add -l
    # "The agent has no identities." ์ถœ๋ ฅ ์‹œ ssh-add๋กœ ์žฌ๋“ฑ๋ก
    
  3. Config ํŒŒ์ผ์— AddKeysToAgent ์„ค์ •

    1
    2
    
    Host *
        AddKeysToAgent yes
    

๋ฌธ์ œ 5: โ€œToo many authentication failuresโ€

์ฆ์ƒ:

1
Received disconnect from 192.168.1.100: Too many authentication failures

์›์ธ:
SSH ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ‚ค๋ฅผ ์‹œ๋„ํ•˜๋‹ค๊ฐ€ ์„œ๋ฒ„์˜ ์‹œ๋„ ํšŸ์ˆ˜ ์ œํ•œ ์ดˆ๊ณผ

ํ•ด๊ฒฐ:
Config ํŒŒ์ผ์— IdentitiesOnly yes ์ถ”๊ฐ€:

1
2
3
Host dev-server
    ...
    IdentitiesOnly yes

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ง€์ •ํ•œ ํ‚ค๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ํ‚ค๋Š” ์‹œ๋„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ 6: Host key verification failed

์ฆ์ƒ:

1
2
3
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

์›์ธ:
์„œ๋ฒ„ ์žฌ์„ค์น˜, IP ์žฌ์‚ฌ์šฉ ๋“ฑ์œผ๋กœ ํ˜ธ์ŠคํŠธ ํ‚ค๊ฐ€ ๋ณ€๊ฒฝ๋จ

ํ•ด๊ฒฐ:

1
2
3
4
5
# Windows์—์„œ ํ•ด๋‹น ํ˜ธ์ŠคํŠธ์˜ ๊ธฐ๋ก ์‚ญ์ œ
ssh-keygen -R 192.168.1.100

# ๋˜๋Š” known_hosts ํŒŒ์ผ์—์„œ ์ง์ ‘ ํ•ด๋‹น ์ค„ ์‚ญ์ œ
notepad $env:USERPROFILE\.ssh\known_hosts

  1. ์ „์ฒด ํ”„๋กœ์„ธ์Šค ์š”์•ฝ

Windows (๋กœ์ปฌ) ์ž‘์—… ์ˆœ์„œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# ===== 1. SSH Key ์ƒ์„ฑ =====
ssh-keygen -t ed25519 -C "myemail@company.com"
# Enter 3ํšŒ (๊ธฐ๋ณธ ๊ฒฝ๋กœ, passphrase ์ƒ๋žต ์‹œ)

# ===== 2. SSH Agent ์„ค์ • (๊ด€๋ฆฌ์ž ๊ถŒํ•œ PowerShell) =====
Start-Service ssh-agent
Set-Service -Name ssh-agent -StartupType Automatic

# ===== 3. SSH Agent์— ํ‚ค ๋“ฑ๋ก (์ผ๋ฐ˜ PowerShell) =====
ssh-add $env:USERPROFILE\.ssh\id_ed25519

# ===== 4. ๊ณต๊ฐœํ‚ค ๋‚ด์šฉ ๋ณต์‚ฌ =====
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | clip
# ๋˜๋Š” ์ถœ๋ ฅ๋œ ๋‚ด์šฉ์„ ์ง์ ‘ ๋ณต์‚ฌ
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub

# ===== 5. VS Code Config ์ž‘์„ฑ =====
code $env:USERPROFILE\.ssh\config
# ์•„๋ž˜ ๋‚ด์šฉ ์ž…๋ ฅ:
1
2
3
4
5
6
7
Host my-linux-server
    HostName 192.168.1.100
    User ubuntu
    IdentityFile C:\Users\YourName\.ssh\id_ed25519
    AddKeysToAgent yes
    IdentitiesOnly yes
    ServerAliveInterval 60

Linux (์„œ๋ฒ„) ์ž‘์—… ์ˆœ์„œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# ===== 1. ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ์„œ๋ฒ„ ์ ‘์† (์ตœ์ดˆ 1ํšŒ๋งŒ) =====
ssh ubuntu@192.168.1.100

# ===== 2. .ssh ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ authorized_keys ์„ค์ • =====
mkdir -p ~/.ssh
chmod 700 ~/.ssh

# ===== 3. ๊ณต๊ฐœํ‚ค ๋“ฑ๋ก =====
cat >> ~/.ssh/authorized_keys
# (Windows์—์„œ ๋ณต์‚ฌํ•œ ๊ณต๊ฐœํ‚ค ๋ถ™์—ฌ๋„ฃ๊ธฐ)
# (Ctrl+D๋กœ ์ €์žฅ)

# ===== 4. ๊ถŒํ•œ ์„ค์ • =====
chmod 600 ~/.ssh/authorized_keys

# ===== 5. ํ™•์ธ ๋ฐ ์ ‘์† ์ข…๋ฃŒ =====
cat ~/.ssh/authorized_keys
exit

VS Code ์ ‘์† ๊ฒ€์ฆ

1
2
3
4
5
6
# ===== 1. ํ„ฐ๋ฏธ๋„์—์„œ ์ˆ˜๋™ ์ ‘์† ํ…Œ์ŠคํŠธ =====
ssh my-linux-server
# Passphrase ์„ค์ • ์‹œ ํ•œ ๋ฒˆ๋งŒ ์ž…๋ ฅ, ์ดํ›„ ์ž๋™

# ===== 2. VS Code์—์„œ ์ ‘์† =====
# F1 โ†’ "Remote-SSH: Connect to Host..." โ†’ my-linux-server ์„ ํƒ

๋น ๋ฅธ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

๋‹จ๊ณ„ Windows Linux ํ™•์ธ ์‚ฌํ•ญ
ํ‚ค ์ƒ์„ฑ โœ… - id_ed25519, id_ed25519.pub ์กด์žฌ
Agent ์‹คํ–‰ โœ… - Get-Service ssh-agent โ†’ Running
ํ‚ค ๋“ฑ๋ก โœ… - ssh-add -l โ†’ ํ‚ค ๋ชฉ๋ก ์ถœ๋ ฅ
๊ณต๊ฐœํ‚ค ๋ณต์‚ฌ โœ… - ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌ ์™„๋ฃŒ
๊ณต๊ฐœํ‚ค ๋“ฑ๋ก - โœ… authorized_keys ํŒŒ์ผ์— ํ•œ ์ค„๋กœ ์ถ”๊ฐ€
๊ถŒํ•œ ์„ค์ • - โœ… .ssh โ†’ 700, authorized_keys โ†’ 600
Config ์ž‘์„ฑ โœ… - Host, HostName, User, IdentityFile ํ™•์ธ
์ ‘์† ํ…Œ์ŠคํŠธ โœ… - ๋น„๋ฐ€๋ฒˆํ˜ธ ์—†์ด ์ ‘์† ์„ฑ๊ณต

๋งˆ์น˜๋ฉฐ

SSH Key ์ธ์ฆ์€ ์ฒ˜์Œ ์„ค์ • ์‹œ ๋‹ค์†Œ ๋ณต์žกํ•ด ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•œ ๋ฒˆ ์ œ๋Œ€๋กœ ๊ตฌ์ถ•ํ•˜๋ฉด ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ Windows ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ Linux ์›๊ฒฉ ์„œ๋ฒ„๋กœ VS Code Remote-SSH๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ ์—†์ด ์ฆ‰์‹œ ์ฝ”๋“œ ํŽธ์ง‘ ํ™˜๊ฒฝ์— ์ง„์ž…ํ•  ์ˆ˜ ์žˆ์–ด ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ๋งค๋„๋Ÿฝ๊ฒŒ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ์š”์  ์žฌ์ •๋ฆฌ

  1. Ed25519 ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์šฐ์„  ์‚ฌ์šฉ - ๋น ๋ฅด๊ณ  ์•ˆ์ „ํ•˜๋ฉฐ ํ˜„๋Œ€์ 
  2. Passphrase + SSH Agent ์กฐํ•ฉ - ๋ณด์•ˆ๊ณผ ํŽธ์˜์„ฑ ๋ชจ๋‘ ํ™•๋ณด
  3. ์—„๊ฒฉํ•œ ๊ถŒํ•œ ๊ด€๋ฆฌ - Linux ์„œ๋ฒ„์—์„œ 700/600 ๊ถŒํ•œ ํ•„์ˆ˜
  4. Config ํŒŒ์ผ ํ™œ์šฉ - ์—ฌ๋Ÿฌ ์„œ๋ฒ„ ๊ด€๋ฆฌ ์‹œ ํšจ์œจ์ 
  5. ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ๊ถŒํ•œ/๊ฒฝ๋กœ ๋จผ์ € ํ™•์ธ - ๋Œ€๋ถ€๋ถ„์˜ ์˜ค๋ฅ˜ ์›์ธ

์ด์ œ ๋งค์ผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ์ˆ˜๊ณ ์—์„œ ๋ฒ—์–ด๋‚˜, ๋” ์ค‘์š”ํ•œ ์ฝ”๋“œ ์ž‘์„ฑ๊ณผ ๋ฌธ์ œ ํ•ด๊ฒฐ์— ์ง‘์ค‘ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค โ˜€๏ธ



-->