๐Ÿ” ์šฐ๋ถ„ํˆฌ ์„œ๋ฒ„์— SSH ๊ณต๊ฐœํ‚ค ๋“ฑ๋กํ•ด์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์—†์ด ์ ‘์†ํ•˜๊ธฐ

kk_0128_ยท2025๋…„ 4์›” 19์ผ
2
post-thumbnail

์ตœ๊ทผ ํ•™์ ๊ฐ€๋ฐฉ(Unibag) ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ, ๋ณด์•ˆ์„ฑ๊ณผ ํŽธ์˜์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด SSH ์ ‘์† ๋ฐฉ์‹์„ ๊ณต๊ฐœํ‚ค ๊ธฐ๋ฐ˜ ์ธ์ฆ์œผ๋กœ ์ „ํ™˜ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” ๋‚ฏ์„ค์—ˆ์ง€๋งŒ, ์„ค์ •ํ•ด๋ณด๋‹ˆ ๊ตฌ์กฐ๊ฐ€ ๋ช…ํ™•ํ–ˆ๊ณ  ํŒ€์›๋“ค๊ณผ์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด์–ด์กŒ๋‹ค.

์ด ๊ธ€์€ ๊ทธ ๊ฒฝํ—˜์„ ๊ธฐ๋กํ•œ ์‹ค์ „ ๊ฐ€์ด๋“œ๋‹ค.

โœ… ์„œ๋ฒ„ ์ฃผ์†Œ๋‚˜ ํ‚ค ๊ฐ’์€ ๋ณด์•ˆ์„ ์œ„ํ•ด ์˜ˆ์‹œ๋กœ ์ž‘์„ฑํ•˜์˜€๋‹ค.


๐Ÿ“Œ 1. SSH ์ ‘์† ์‹œ๋„ (์ดˆ๊ธฐ ์ƒํƒœ)

ssh odroid@<์„œ๋ฒ„_IP>

์‚ฌ์šฉํ•œ ์ด์œ : ์„œ๋ฒ„์— ๊ธฐ๋ณธ์ ์ธ SSH ์ ‘์†์„ ์‹œ๋„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ.

์ฒ˜์Œ ์ ‘์† ์‹œ ์„œ๋ฒ„์˜ ํ˜ธ์ŠคํŠธ ํ‚ค๊ฐ€ ๋กœ์ปฌ์— ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ๋œฌ๋‹ค.

The authenticity of host '<์„œ๋ฒ„_IP>' can't be established.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

์ฒ˜์Œ ์ ‘์†์ด๋ฏ€๋กœ yes๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์ง„ํ–‰ํ•œ๋‹ค.


๐Ÿ˜ข ๋น„๋ฐ€๋ฒˆํ˜ธ ์ธ์ฆ ์‹คํŒจ

odroid@<์„œ๋ฒ„_IP>'s password:
Permission denied, please try again.

๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ชจ๋ฅผ ๊ฒฝ์šฐ ์ ‘์†์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ณต๊ฐœํ‚ค ์ธ์ฆ์„ ์„ค์ •ํ•œ๋‹ค.


๐Ÿชช 2. ๋กœ์ปฌ์—์„œ SSH ํ‚ค ์ƒ์„ฑ

GitHub Actions์šฉ (์ž๋™ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด)

ssh-keygen -t rsa -b 4096 -C "unibag-deploy@github-actions" -f ~/.ssh/unibag_github_actions

์‚ฌ์šฉํ•œ ์ด์œ : GitHub Actions์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์—†์ด ์„œ๋ฒ„์— ์ž๋™ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ‚ค ์Œ์„ ์ƒ์„ฑ.

  • f ์˜ต์…˜์œผ๋กœ ํ‚ค ํŒŒ์ผ ์ด๋ฆ„์„ ๋ช…์‹œํ•˜๊ณ , C๋Š” ํ‚ค ์‹๋ณ„์šฉ ์ฃผ์„์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

ํŒ€์›์šฉ (์˜ˆ: ํŒ€์› ํ‚ค ๋ฐœ๊ธ‰)

ssh-keygen -t rsa -b 4096 -C "kim@unibag-team" -f ~/.ssh/team_kim

์‚ฌ์šฉํ•œ ์ด์œ : ํŒ€์›์ด ํ‚ค๊ฐ€ ์—†๋‹ค๊ณ  ํ•ด์„œ ๋Œ€์‹  ๋ฐœ๊ธ‰ํ•ด๋“œ๋ฆฌ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ.

ํ‚ค ์Œ์„ ๋ฐœ๊ธ‰ํ•œ ๋’ค ๊ณต๊ฐœํ‚ค๋Š” ์„œ๋ฒ„์— ๋“ฑ๋กํ•˜๊ณ , ๋น„๊ณต๊ฐœํ‚ค๋Š” ์•ˆ์ „ํ•˜๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.


โœ‰๏ธ ๊ณต๊ฐœํ‚ค ์ „๋‹ฌ ๋ฐ ๋“ฑ๋ก ๊ณผ์ •

์•ก์…˜ ๋‹ด๋‹น ํŒ€์›๋ถ„์ด ์„œ๋ฒ„์— ์ ‘์†์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ํ•˜์…”์„œ, ๋Œ€์‹  ํ‚ค๋ฅผ ๋งŒ๋“ค์–ด ๋“ฑ๋ก์„ ๋„์™€๋“œ๋ฆฌ๊ธฐ๋กœ ํ–ˆ๋‹ค.

์ฒ˜์Œ์—” โ€œ๋น„๊ณต๊ฐœํ‚ค๋ฅผ ์„œ๋ฒ„์— ๋“ฑ๋กํ•˜๊ณ , ๊ณต๊ฐœํ‚ค๋กœ ๋กœ๊ทธ์ธํ•˜๋Š” ๊ฑด๊ฐ€์š”?โ€๋ผ๊ณ  ๋ฌผ์œผ์…จ๋Š”๋ฐ,

์ •ํ™•ํ•œ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

  1. ๋‚ด ๋กœ์ปฌ์—์„œ ํŒ€์›์šฉ ํ‚ค ์ƒ์„ฑbash ssh-keygen -t rsa -b 4096 -C "kim@unibag-team" -f ~/.ssh/team_kim
  2. ๊ณต๊ฐœํ‚ค(team_kim.pub)๋ฅผ ์„œ๋ฒ„์˜ odroid ๊ณ„์ •์— ๋“ฑ๋กbash mkdir -p ~/.ssh chmod 700 ~/.ssh cat ~/team_kim.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
  3. ๋น„๊ณต๊ฐœํ‚ค(team_kim)๋ฅผ zip ์•”ํ˜ธํ™”ํ•ด์„œ ํŒ€์›์—๊ฒŒ ์ „๋‹ฌbash zip -e team_kim.zip ~/.ssh/team_kim
  4. ํŒ€์›์€ ๋ฐ›์€ ํ‚ค๋ฅผ ์ž์‹ ์˜ .ssh ํด๋”์— ๋ณต์‚ฌํ•˜๊ณ  ๊ถŒํ•œ ์„ค์ •bash mv ~/Downloads/team_kim ~/.ssh/ chmod 600 ~/.ssh/team_kim
  5. ์ ‘์† ์‹œbash ssh -i ~/.ssh/team_kim -p <ํฌํŠธ๋ฒˆํ˜ธ> <๊ณ„์ •๋ช…>@<์„œ๋ฒ„_IP>

์ด๋Ÿฐ ํ๋ฆ„์œผ๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ ์—†์ด SSH ์ ‘์†์ด ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค.


๐Ÿ”ง 3. sshd ์„ค์ • ํ™•์ธ (ํ•„์š”์‹œ)

sudo nano /etc/ssh/sshd_config

์‚ฌ์šฉํ•œ ์ด์œ : ์„œ๋ฒ„๊ฐ€ ๊ณต๊ฐœํ‚ค ์ธ์ฆ์„ ํ—ˆ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ํฌํŠธ ๋“ฑ ์„ค์ •์„ ์ ๊ฒ€ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

๋‹ค์Œ ํ•ญ๋ชฉ๋“ค์„ ํ™•์ธ ๋˜๋Š” ์ถ”๊ฐ€ํ•œ๋‹ค:

Port <ํฌํŠธ๋ฒˆํ˜ธ>PubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys

์„ค์ •์„ ๋ณ€๊ฒฝํ•œ ๊ฒฝ์šฐ์—๋Š” SSH ์„œ๋ฒ„ ์žฌ์‹œ์ž‘์ด ํ•„์š”ํ•˜๋‹ค:

sudo systemctl restart ssh

๋‹จ, ๊ณต๊ฐœํ‚ค๋ฅผ ๋“ฑ๋กํ•œ ๊ฒฝ์šฐ์—๋Š” ์žฌ์‹œ์ž‘์„ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.


โœ… 4. SSH ๊ณต๊ฐœํ‚ค ์ธ์ฆ ํ…Œ์ŠคํŠธ

ssh -i ~/.ssh/team_kim -p <ํฌํŠธ๋ฒˆํ˜ธ> <๊ณ„์ •๋ช…>@<์„œ๋ฒ„_IP>

์‚ฌ์šฉํ•œ ์ด์œ : ๊ณต๊ฐœํ‚ค ๊ธฐ๋ฐ˜์œผ๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ ์—†์ด ์ ‘์†์ด ์ž˜ ๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ–‰.


๐Ÿงน Host key verification ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

๋งŒ์•ฝ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด:

Host key verification failed.

์ด๋Š” ์ด์ „์— ์ €์žฅ๋œ ์„œ๋ฒ„์˜ ํ˜ธ์ŠคํŠธ ํ‚ค์™€ ํ˜„์žฌ ํ‚ค๊ฐ€ ๋‹ฌ๋ผ์กŒ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•˜๋‹ค:

ssh-keygen -R "[<์„œ๋ฒ„_IP>]:<ํฌํŠธ๋ฒˆํ˜ธ>"

์‚ฌ์šฉํ•œ ์ด์œ : ๊ธฐ์กด์— ์ €์žฅ๋œ ์ž˜๋ชป๋œ ํ˜ธ์ŠคํŠธํ‚ค๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.


๐Ÿ”’ SSH ๋น„๋ฐ€๋ฒˆํ˜ธ ๋กœ๊ทธ์ธ ๋น„ํ™œ์„ฑํ™” ๋ฐฉ๋ฒ• (๊ณต๊ฐœํ‚ค ์ธ์ฆ๋งŒ ํ—ˆ์šฉ)

๊ณต๊ฐœํ‚ค ๊ธฐ๋ฐ˜ ์ธ์ฆ์„ ํ™œ์„ฑํ™”ํ•œ ํ›„์—๋Š” ๊ธฐ์กด ๋น„๋ฐ€๋ฒˆํ˜ธ ๋กœ๊ทธ์ธ ๋ฐฉ์‹์€ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ๋ณด์•ˆ์— ์ข‹๋‹ค.
์ด๋ฅผ ์œ„ํ•ด SSH ์„ค์ • ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ณ  SSH ์„œ๋น„์Šค๋ฅผ ์žฌ์‹œ์ž‘ํ•œ๋‹ค.

๐Ÿ“ 1. SSH ์„ค์ • ํŒŒ์ผ ์—ด๊ธฐ

sudo nano /etc/ssh/sshd_config

โš™๏ธ 2. ์•„๋ž˜ ํ•ญ๋ชฉ ์ˆ˜์ •

PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

๐Ÿ”น ์ด๋ฏธ ์„ค์ •๋˜์–ด ์žˆ๋‹ค๋ฉด ์ฃผ์„(#)์„ ์ œ๊ฑฐํ•˜๊ณ  no๋กœ ๋ณ€๊ฒฝ
๐Ÿ”น PubkeyAuthentication yes๊ฐ€ ์ผœ์ ธ ์žˆ์–ด์•ผ ๊ณต๊ฐœํ‚ค ์ธ์ฆ์ด ์ •์ƒ ์ž‘๋™ํ•จ

๐Ÿ’พ 3. ์ €์žฅํ•˜๊ณ  ์ข…๋ฃŒ

  • Nano ๊ธฐ์ค€: Ctrl + O โ†’ Enter โ†’ Ctrl + X

๐Ÿ” 4. SSH ์„œ๋น„์Šค ์žฌ์‹œ์ž‘

sudo systemctl restart ssh

โœ… ์™„๋ฃŒ

์ด์ œ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ฐฉ์‹์€ ์ฐจ๋‹จ๋˜๊ณ , ~/.ssh/authorized_keys์— ๋“ฑ๋ก๋œ ํ‚ค๋กœ๋งŒ ์ ‘์†์ด ๊ฐ€๋Šฅํ•˜๋‹ค.


๐Ÿงช ์ ‘์† ํ…Œ์ŠคํŠธ ํŒ

SSH ์„ธ์…˜์ด ๋Š๊ธฐ๋ฉด ๋‹ค์‹œ ๋ถ™๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์œผ๋‹ˆ, ์„ค์ • ์ „ ๊ธฐ์กด ์„ธ์…˜์€ ๊ทธ๋Œ€๋กœ ๋‘” ์ฑ„ ์ƒˆ ํ„ฐ๋ฏธ๋„์—์„œ ํ…Œ์ŠคํŠธ ์ ‘์†์„ ๊ถŒ์žฅํ•œ๋‹ค.

ssh -i ~/.ssh/mykey <๊ณ„์ •๋ช…>@<์„œ๋ฒ„_IP> -p <ํฌํŠธ๋ฒˆํ˜ธ>

โœ… ๊ฒฐ๋ก 

  • ๊ณต๊ฐœํ‚ค ์ธ์ฆ์€ SSH ์ ‘์†์„ ํ›จ์”ฌ ํŽธํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.
  • ์ž๋™ํ™”์—๋Š” ์•”ํ˜ธ ์—†๋Š” ํ‚ค, ๊ฐœ์ธ์šฉ์€ ์•”ํ˜ธ ์žˆ๋Š” ํ‚ค ์‚ฌ์šฉ์„ ์ถ”์ฒœํ•œ๋‹ค.
  • ๊ณต๊ฐœํ‚ค์™€ ๋น„๊ณต๊ฐœํ‚ค์˜ ์—ญํ• ์„ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.
  • ์‹ค๋ฌด์—์„œ ํ‚ค๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ์Šต๊ด€์€ ๋ณด์•ˆ์ƒ ๋งค์šฐ ์ข‹๋‹ค.
profile
๊ณต๋ถ€ ๋…ธํŠธ ๊ฒธ ๊ธฐ๋ก์žฅ

2๊ฐœ์˜ ๋Œ“๊ธ€

๊ด‘๋ž˜ 4์›” 7์ผ์— ๋Œ€์ฒด ๋ฌด์Šจ์ผ์ด ์žˆ์—ˆ๋˜๊ฑฐ์•ผ
๊ธ€ ์—„์ฒญ ๋งŽ์ด ์˜ฌ๋ ท๋„ค ใ„ทใ„ท

1๊ฐœ์˜ ๋‹ต๊ธ€