Skip to content

Latest commit

ย 

History

History
210 lines (141 loc) ยท 7.34 KB

File metadata and controls

210 lines (141 loc) ยท 7.34 KB

๋ชฉ์ฐจ



SSH ๊ฐœ๋…

  • SSH (Secure Shell)์€ ๋„คํŠธ์›Œํฌ ์ƒ์˜ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์— ๋กœ๊ทธ์ธํ•˜๊ฑฐ๋‚˜ ์›๊ฒฉ ์‹œ์Šคํ…œ์—์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์œผ๋กœ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
    • SSH๋Š” ์‘์šฉ ๊ณ„์ธต์— ์†ํ•ด์žˆ๋‹ค. (TCP, UDP๋Š” ๊ทธ ์•„๋ž˜์ธต์ธ ์ „์†ก ๊ณ„์ธต)
    • TCP๋งŒ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ํ•œ๋‹ค.
  • SSH๋Š” ๊ธฐ์กด์˜ ftp, telnet ๋“ฑ์„ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ, ๊ฐ•๋ ฅํ•œ ์ธ์ฆ ๋ฐฉ๋ฒ• ๋ฐ ์•ˆ์ „ํ•˜์ง€ ๋ชปํ•œ ๋„คํŠธ์›Œํฌ์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

SSH ๋™์ž‘ ์›๋ฆฌ


Client - Server

  • ์›น์˜ Client - Server๊ด€๊ณ„๊ฐ€ ๊ทธ๋Œ€๋กœ ์ ์šฉ์ด๋œ๋‹ค.
    • openssh-client์™€ openssh-server๋ผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋”ฐ๋กœ ์กด์žฌํ•œ๋‹ค.

SSH ์ธ์ฆ ๊ณผ์ •

SSH์˜ ์ธ์ฆ ๊ณผ์ •์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„  ์šฐ์„  ๋น„๋Œ€์นญํ‚ค(Asymmetric Key)์— ๋Œ€ํ•ด์„œ ์•Œ์•„์•ผ ํ•œ๋‹ค.

  • SSH ์„ค์น˜ ํ›„ ์ฒ˜์Œ ๊ตฌ๋™๋  ๋•Œ ๋‚ด๋ถ€์ ์œผ๋กœ ๋น„๋Œ€์นญํ‚ค(๊ณต๊ฐœํ‚ค์™€ ๋น„๋ฐ€ํ‚ค)๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.
  • SSH์ธ์ฆ ๊ณผ์ •
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ฒ˜์Œ ์ ‘์†์„ ์‹œ๋„ํ•˜๋ฉด ๊ณต๊ฐœํ‚ค๋ฅผ ๋ฐ›์„์ง€ ๋ฌป๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜ค๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ YES๋ฅผ ์„ ํƒํ•˜๋ฉด ๊ณต๊ฐœํ‚ค๋ฅผ ๋ฐ›์•„์„œ ํด๋ผ์ด์–ธํŠธ์— ์žˆ๋Š” .ssh/known_hostsํŒŒ์ผ์— ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค.
    • ํด๋ผ์ด์–ธํŠธ๋Š” ๋‚œ์ˆ˜๊ฐ’์„ ๋ฐœ์ƒ์‹œํ‚ค๊ณ  ๋‚œ์ˆ˜๊ฐ’์— ๋Œ€ํ•œ ํ•ด์‹œ๊ฐ’์„ ์ƒ์„ฑํ•ด ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚œ์ˆ˜๊ฐ’์„ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์„œ๋ฒ„์— ์ „์†กํ•œ๋‹ค.
    • ์„œ๋ฒ„์—์„œ๋Š” ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๋ฐ€ํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•œ ํ›„ ๋‚œ์ˆ˜๊ฐ’์„ ์•Œ์•„๋‚ธ๋‹ค. ๋ณตํ˜ธํ™”๋œ ๋‚œ์ˆ˜๊ฐ’์„ ํ†ตํ•ด ํ•ด์‹œ๊ฐ’์„ ๋‹ค์‹œ ๋งŒ๋“  ํ›„ ํด๋ผ์ด์–ธํŠธ์— ๋‹ค์‹œ ์ „์†กํ•˜๊ฒŒ ๋œ๋‹ค.
    • ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ํ•ด์‹œ๊ฐ’๊ณผ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ํ•ด์‹œ๊ฐ’์„ ๋น„๊ตํ•ด ์„œ๋ฒ„๊ฐ€ ์ •์ƒ์ ์ธ ์„œ๋ฒ„์ธ์ง€ ํ™•์ธํ•˜๊ฒŒ ๋œ๋‹ค.

๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.


ํŠน์ง•

  • ๋ณด์•ˆ ํ†ต์‹ , ํฌํŠธํฌ์›Œ๋”ฉ ๋“ฑ์˜ ๊ธฐ๋Šฅ ์ œ๊ณต
    • ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ telnet, SMTP๋“ฑ์— ๋Œ€ํ•œ ํŒจํ‚ท ์Šค๋‹ˆํ•‘ ๋“ฑ์˜ ๋ณด์•ˆ ๊ณต๊ฒฉ ๋ฐฉ์ง€
  • ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„ ๊ด€๊ณ„ ์กด์žฌ
    • ์‚ฌ์šฉ์ž ํด๋ผ์ด์–ธํŠธ ๋ฐ ์‘์šฉ ์„œ๋ฒ„ ์‚ฌ์ด์—์„œ SSH ํด๋ผ์ด์–ธํŠธ ๋ฐ SSH ์„œ๋ฒ„๊ฐ€ ์กด์žฌํ•จ
      • ์„ค์น˜๋œ ๋‘ S/W ์‚ฌ์ด์—์„œ TCP ๋ณด์•ˆ ์ฑ„๋„์ด ํ˜•์„ฑ๋จ
    • ์„œ๋ฒ„๋Š” ์›๊ฒฉ ์ ‘๊ทผํ•˜๋ ค๋Š” ํ˜ธ์ŠคํŠธ, ํด๋ผ์ด์–ธํŠธ๋Š” ์›๊ฒฉ ์ ‘๊ทผํ•˜๋Š” ์‚ฌ์šฉ์ž.
  • ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ ๋ฒˆํ˜ธ
    • ์ „์†ก๊ณ„์ธต ํ”„๋กœํ† ์ฝœ : TCP๋งŒ ๊ฐ€๋Šฅ (TCP ์ƒ์— ๋ณด์•ˆ ์ฑ„๋„ ํ˜•์„ฑ๋จ)
    • ํฌํŠธ ๋ฒˆํ˜ธ : 22 (SSH ์„œ๋ฒ„์— ๊ฐœ๋ฐฉ๋˜๋Š” ํฌํŠธ)

๋” ๋งŽ์€ ์ •๋ณด๋Š” ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์ž!


SSH ์„ค์ •

๋‹ค์–‘ํ•œ SSH ์„ค์ •์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณธ๋‹ค.


SSH ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์„ฑํ•˜๊ธฐ

SSH Server ์—ญํ• ์„ ํ•˜๋Š” ์ธ์Šคํ„ด์Šค๋กœ ๊ฐ€์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

$ ssh-keygen -t rsa

๊ทธ๋Ÿผ ์•„๋ž˜์™€ ๊ฐ™์ด publicํ‚ค์™€ privateํ‚ค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ณผ์ •์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์—์„œ ๋”ฐ๋กœ ์ €์žฅ ์œ„์น˜๋ฅผ ์„ค์ •ํ•ด์ฃผ์ง€ ์•Š์•˜๋‹ค๋ฉด /root/.ssh์— publicํ‚ค์™€ privateํ‚ค๊ฐ€ ์ €์žฅ๋œ๋‹ค.

  • public ํ‚ค ์กฐํšŒ: sudo cat /root/.ssh/id_rsa.pub
  • private ํ‚ค ์กฐํšŒ: sudo cat /root/.ssh/id_rsa

sudo๋ฅผ ๋ถ™์œผ๋ฉด ์œ„์™€ ๊ฐ™์ด /root/.ssh์— ๋””ํดํŠธ๋กœ ํ‚ค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ, sudo๋ฅผ ๋ถ™์ด์ง€ ์•Š์œผ๋ฉด ํ•ด๋‹น ์œ ์ €์˜ home์— ๋””ํดํŠธ๋กœ ํ‚ค๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. (/home/ubuntu)


์ด์ œ ์ ‘์†ํ•˜๋ ค๋Š” ์„œ๋น„์Šค์šฉ ์ธ์Šคํ„ด์Šค์—๊ฐ€์„œ ์œ„์—์„œ ๋งŒ๋“  public key๋ฅผ ๋ณต์‚ฌํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

$ vi ~/.ssh/authorized_keys

์ด์ œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ ‘์†ํ•ด์ฃผ๋ฉด ์ ‘์†๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

$ ssh {์„œ๋น„์Šค์šฉ ์„œ๋ฒ„ ํ˜ธ์ŠคํŠธ}@{์„œ๋น„์Šค์šฉ ์„œ๋ฒ„ IP}

ssh hostname@ip ๋ช…๋ น์–ด๋ฅผ ์น˜๋ฉด, ~/.ssh/id_rsa์˜ ํ‚ค ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ ‘์†์„ ์‹œ๋„ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ ‘์†ํ•˜๊ณ ์žํ•˜๋Š” ์„œ๋ฒ„์˜ authorized_keys์— ๋Œ€์‘ํ•˜๋Š” public key๊ฐ€ ์žˆ์œผ๋ฉด ์ ‘์†์ด ๋œ๋‹ค.


SSH ์ ‘์† ํฌํŠธ ๋ณ€๊ฒฝ

$ vi /etc/ssh/sshd_config

# Port 22 ๋ถ€๋ถ„์„ ์ฃผ์„์„ ์ง€์šฐ๊ณ  ์›ํ•˜๋Š” port๋กœ ์„ค์ •
Port 8888

# ssh service ์žฌ์‹œ์ž‘
$ sudo service ssh restart
$ ssh -i {keyfile} -p 8888 {hostname}@{ip}

Shell Prompt ์ˆ˜์ •ํ•˜๊ธฐ

๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ๋ฅผ ํ™•์ธํ•ด์ฃผ์„ธ์š”.

์ผ๋ฐ˜์ ์œผ๋กœ SSH๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋ฉด ํ„ฐ๋ฏธ๋„์—์„  IP ์ฃผ์†Œ๋งŒ์„ ๋ณด์—ฌ์ค€๋‹ค.

ํ•˜์ง€๋งŒ IP๋งŒ์œผ๋กœ Bastion์ธ์ง€, DEV์„œ๋ฒ„์ธ์ง€, PROD์„œ๋ฒ„์ธ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค.

์ด๋•Œ Shell์˜ Prompt๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ์ด๋ฆ„์„ ๋ถ€์—ฌํ•˜์—ฌ ์–ด๋–ค ์„œ๋ฒ„์ธ์ง€ ์‰ฝ๊ฒŒ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค.

$ sudo vi ~/.bashrc

# ๊ฐ€์žฅ ๋ฐ‘์—
USER=BASTION
PS1='[\e[1;31m$USER\e[0m][\e[1;32m\t\e[0m][\e[1;33m\u\e[0m@\e[1;36m\h\e[0m \w] \n\$ \[\033[00m\]'
# ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

# ๊ทธ๋ฆฌ๊ณ  resource ๋ช…๋ น์„ ํ†ตํ•ด ์ ์šฉ์‹œ์ผœ์ค€๋‹ค.
source ~/.bashrc

๋งŒ์•ฝ ํ•ด๋‹น ์„œ๋ฒ„์— ๋Œ€ํ•œ ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด /etc/bashrc๋ฅผ ์ˆ˜์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๋˜ํ•œ, bashrc์— ๋Œ€ํ•œ ๊ฐœ๋…์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.


SSH ํ˜ธ์ŠคํŠธ ๋ณ„์นญ์ฃผ๊ธฐ

๋ณดํ†ต SSH๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด์„  ์•„๋ž˜์™€ ๊ฐ™์ด {Hostname}@{ip address}๋ฅผ ํ†ตํ•ด ๋ชฉ์ ์ง€๋ฅผ ์ •ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ๋งค๋ฒˆ ์ด๋ ‡๊ฒŒ ํ•˜๊ธฐ ๋ฒˆ๊ฑฐ๋Ÿฝ๋‹ค๋ฉด /etc/hosts์— ๋ฏธ๋ฆฌ ๋ณ„์นญ์„ ์„ค์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

$ vi /etc/hosts

# {IP} {๋ณ„์นญ} ์ถ”๊ฐ€
192.168.1.144 dev

์ด์ œ ssh {hostname}@dev์œผ๋กœ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค. (ex. ssh ubuntu@dev)


์กฐ๊ธˆ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค.

$ vi ~/.ssh/config

Host {hostname}
HostName {server ip}
User ubuntu
# Port {port}
# IdentityFile ~/.ssh/{pem key}

~/.ssh/config์— ์œ„์™€ ๊ฐ™์ด ์„ค์ •ํ•ด์ฃผ๋ฉด ํ›จ์”ฌ ๋” ๊ฐ„ํŽธํ•˜๊ฒŒ ์ ‘์†๊ฐ€๋Šฅํ•˜๋‹ค.


์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณด์ž.

์ด์ œ ssh dev.was๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ๋ฅผ ํ™•์ธํ•ด์ฃผ์„ธ์š”.


์ฐธ๊ณ