Bash+SSH ์†Œ๊ฐœ

5768 ๋‹จ์–ด bash
์ด ์ฃผ์ œ๋Š” ๋งค์šฐ ํ’๋ถ€ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋Š” ๊นŠ์ด ์—ฐ๊ตฌํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.๋‹ค์Œ์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.
  • ssh ์ ‘๊ทผ ํ‚ค์™€ ๊ฐœ์ธ ํ‚ค ์Œ์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ssh ์—์ด์ „ํŠธ์— ํ‚ค ์ถ”๊ฐ€(ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ)
  • ์›๊ฒฉ ์‹œ์Šคํ…œ์— SSH ์—ฐ๊ฒฐ ๋ฐฉ๋ฒ•
  • ๋กœ์ปฌ ์‹œ์Šคํ…œ๊ณผ ์›๊ฒฉ ์‹œ์Šคํ…œ ๊ฐ„์— ํŒŒ์ผ์„ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•scp
  • ์ธํ„ฐ๋„ท์—์„œ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ๋ฐฉ๋ฒ•
  • VSCode๋ฅผ VP์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ์ €๋Š” ์ฃผ๋กœ Digital Ocean์„ ์‚ฌ์šฉํ•˜์—ฌ ์œ„ํƒ ๊ด€๋ฆฌ ์ˆ˜์š”๋ฅผ ๋งŒ์กฑ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— Digital Ocean์— ๊ฐ€์ƒ ๊ฐœ์ธ ์„œ๋ฒ„์— ์„ค์น˜ํ•˜๊ณ  ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.์ฆ‰, AWS, Azure ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋“  ๋ชจ๋“  ๋ถ„์•ผ์— ์ ์šฉ๋˜๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. Digital Ocean์—์„œ VPS("Droplet"์ด๋ผ๊ณ ๋„ ํ•จ)๋ฅผ ์ฒ˜์Œ ๋งŒ๋“ค๋ฉด ์•”ํ˜ธ๋‚˜ SSH ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๊ธฐ์— ์—ฐ๊ฒฐํ•  ๊ฒƒ์ธ์ง€ ๋ฌป์Šต๋‹ˆ๋‹ค.๋‚˜๋Š” ๊ฑฐ์˜ ํ•ญ์ƒ SSH ํ‚ค๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋จผ์ € ๋กœ์ปฌ ์ปดํ“จํ„ฐ์—์„œ ์ด ํ‚ค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›Œ์•ผ ํ•œ๋‹ค.VPS์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ์ปฌ ์ปดํ“จํ„ฐ์—์„œ ๊ฐœ์ธ์šฉ/๊ณต์šฉ SSH ํ‚ค ์Œ ๋งŒ๋“ค๊ธฐ
  • ์‚ฌ์šฉ์ž๊ฐ€ ํ˜ธ์ŠคํŠธ๋ฅผ ์„ค์ •ํ•  ๋•Œ ํ•ด๋‹น ํ˜ธ์ŠคํŠธ ๊ณต๊ธ‰์—…์ฒด์˜ SSH ํ•„๋“œ์— ๊ณต๊ฐœ ํ‚ค๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค
  • ์‚ฌ์šฉ์ž๊ฐ€ SSH๋ฅผ ํ†ตํ•ด ํ˜ธ์ŠคํŠธ์— ์—ฐ๊ฒฐํ•˜๋ ค๊ณ  ํ•  ๋•Œ SSH ๋„๊ตฌ๋Š” VPS์— ์ €์žฅ๋œ ๊ณต๊ฐœ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ ์ปดํ“จํ„ฐ~/.ssh ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅ๋œ ๊ฐœ์ธ ํ‚ค/๊ณต๊ฐœ ํ‚ค ์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ํ‚ค๊ฐ€ ์œ ํšจํ•˜๋ฉด ์‚ฌ์šฉ์ž๋Š” ํ˜„์žฌ ์›๊ฒฉ์œผ๋กœ VPS์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ IP ์ฃผ์†Œ๋Š” VPS์˜ ์•Œ๋ ค์ง„ ํ˜ธ์ŠคํŠธ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ๊ณต๊ฐœ ํ‚ค/๊ฐœ์ธ ํ‚ค ์Œ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.์šฐ๋ฆฌ๋Š” OpenSSH ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Mac/Linux์—์„œ ์ด ์ ์„ ์‹คํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    ssh-keygen
    
    ํ‚ค๋ฅผ ์–ด๋Š ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅํ• ์ง€ ๋ฌผ์–ด๋ด…๋‹ˆ๋‹ค.์ž‘์—…ํ•˜๋ ค๋ฉด ~/.ssh ํด๋”์— ๋„ฃ์–ด์•ผ ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž ์ •์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๋ช…๋ น์ด ์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ผ๊ณ  ์š”๊ตฌํ•  ๋•Œ, Enter ํ‚ค๋ฅผ ๋‘ ๋ฒˆ ๋ˆ„๋ฅด๊ธฐ๋งŒ ํ•˜๋ฉด ๋‚ด์šฉ์„ ์ž…๋ ฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ €ํฌ๋Š” ๊ฐœ์ธ์šฉ ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•”ํ˜ธ ๋ณดํ˜ธ ํ‚ค๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.๋‚˜์˜ ์ƒˆ ์—ด์‡ ๋Š” /home/zach/.ssh/id_digitalocean_rsa ๋กœ ์ €์žฅ๋œ๋‹ค.
    ์ด ํ‚ค์˜ ๊ณต์šฉ ๋ฒ„์ „์„ ์ธ์‡„ํ•˜๊ณ  ๋ณต์‚ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.์ด ์˜ˆ์ œ์—์„œ๋Š” ๋ช…๋ น์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    cat ~/.ssh/id_digitalocean_rsa.pub
    
    ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.pub.ํ‚ค ์Œ์„ ๋งŒ๋“ค ๋•Œ ํ•ญ์ƒ .pub ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค.์ด ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๋ณต์‚ฌํ•œ ํ›„ ์ˆ™์ฃผ ๊ณต๊ธ‰์—…์ฒด์˜ SSH ํ‚ค ์ƒ์ž์— ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค.๋””์ง€ํ„ธ ๋ฐ”๋‹ค์—์„œ ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์—ฌ๊ธฐ์— ๋ถ™์ผ ๊ฒƒ์ด๋‹ค.

    ์™„๋ฃŒ๋˜๋ฉด ๊ฐ€์ƒ ๋จธ์‹ ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ด์ œ ์ƒˆ ๊ฐ€์ƒ ์‹œ์Šคํ…œ์˜ IP ์ฃผ์†Œ๋ฅผ ์ฐพ์•„ ํ„ฐ๋ฏธ๋„์— ๋‹ค์Œ ๋ช…๋ น์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    ssh -p 22 root@157.230.167.2
    
    ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด VPS์— ์„ฑ๊ณต์ ์œผ๋กœ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ssh ํ”„๋ก์‹œ์— ํ‚ค ์˜๊ตฌ ์ถ”๊ฐ€


    ์ด๊ฒƒ์€ Linux์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์ง€๋งŒ, Mac์—์„œ๋Š” ๊ธฐ๋ณธ ์„ค์ •์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.๊ธฐ๋ณธ์ ์œผ๋กœ id_rsa ์ด ์•„๋‹Œ ํ‚ค๋Š” ssh ํ”„๋ก์‹œ ์œ ํ‹ธ๋ฆฌํ‹ฐ์— ์ถ”๊ฐ€๋˜์ง€ ์•Š๊ณ  Mac ํ‚ค ์ฒด์ธ์— ์ถ”๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.์ด๊ฒƒ์€ ๊ฐ€์ƒ ์‹œ์Šคํ…œ์— ๋กœ๊ทธ์ธํ•  ๋•Œ๋งˆ๋‹ค ssh ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด ๋‚˜๋Š” digital-ocean๋ผ๋Š” ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, ๋‚˜์˜ ๋””์ง€ํ„ธ ํ•ด์–‘ ๋ฌผ๋ฐฉ์šธ์— ๋กœ๊ทธ์ธํ•˜๋Š” ๋ฐ ์“ฐ์ธ๋‹ค.
    # Loads necessary environment variables
    eval `ssh-agent -s`
    
    # Adds ssh key
    ssh-add -K ~/.ssh/digital-ocean
    
    # Login
    ssh -p 22 root@<some-ip-address>
    
    Mac์— ๋กœ๊ทธ์ธํ•  ๋•Œ๋งˆ๋‹ค ์ด๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š๋„๋ก ๋‹ค์Œ ํ•ญ๋ชฉ์ด ์žˆ๋„๋ก ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค~/.ssh/config.
    Host *
      UseKeychain yes
      AddKeysToAgent yes
      IdentityFile ~/.ssh/id_rsa
      IdentityFile ~/.ssh/digital-ocean
    
    ์œ„์—์„œ'๋ชจ๋“ '์„ ํฌํ•จํ•˜๋Š” ํ˜ธ์ŠคํŠธ (github.com ๊ฐ™์€ ๋„๋ฉ”์ธ์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Œ) ๋ฅผ ์ง€์ •ํ•˜๊ณ , ์—์ด์ „ํŠธ์—๊ฒŒ ํ‚ค ์ฒด์ธ์„ ์‚ฌ์šฉํ•˜๊ณ , ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ๋กœ๊ทธ์ธ ์ด๋ฆ„์— ์—ด๊ฑฐ๋œ ๋‘ ๊ฐœ์˜ ์‹ ๋ถ„ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋ผ๊ณ  ์•Œ๋ ค ์ค๋‹ˆ๋‹ค.

    ๋กœ์ปฌ ์ปดํ“จํ„ฐ์—์„œ ์›๊ฒฉ ์ปดํ“จํ„ฐ๋กœ


    ๋‹ค์Œ์€ ์›๊ฒฉ ์ปดํ“จํ„ฐ์™€ ๋กœ์ปฌ ์ปดํ“จํ„ฐ ์‚ฌ์ด์—์„œ ํŒŒ์ผ์„ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ ์ฃผ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.์ด๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” scp ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    ๋งŒ์•ฝ ๋‚ด๊ฐ€ sample-file.txt๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด, ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์›๊ฒฉ ๊ธฐ๊ณ„์— ์—…๋กœ๋“œํ•˜๋Š” ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
    scp -r sample-file.txt root@157.230.167.2:~/
    
    ์ด๊ฒƒ์€ sample-file.txt ์‚ฌ์šฉ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ root ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๊ณ  ์ด ํŒŒ์ผ์„ ๋‚ด ์›๊ฒฉ ๊ธฐ๊ธฐ์˜ ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ ~/ ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.IP ์ฃผ์†Œ ๋’ค์— ์‚ฌ์นญ : ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์›๊ฒฉ ๊ธฐ๊ธฐ์— ์–ด๋–ค ๊ฒฝ๋กœ๋“  ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์›๊ฒฉ ์ปดํ“จํ„ฐ์—์„œ ๋กœ์ปฌ ์ปดํ“จํ„ฐ๋กœ


    ์›๊ฒฉ ์ปดํ“จํ„ฐ์—์„œ ๋กœ์ปฌ ์ปดํ“จํ„ฐ๋กœ ๋™์ผํ•œ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.
    scp -r root@157.230.167.2:~/sample-file.txt ~/Downloads
    
    ์ด๊ฒƒ์€ ๊ฐ™์€ ๊ฒฌ๋ณธ ํŒŒ์ผ์„ ๋กœ์ปฌ ์ปดํ“จํ„ฐ์˜ ~/Downloads ํด๋”์— ๋„ฃ์„ ๊ฒƒ์ด๋‹ค.

    wget์„ ์‚ฌ์šฉํ•˜์—ฌ ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง€๋ฅผ ์›๊ฒฉ ๊ธฐ๊ธฐ๋กœ ๋‹ค์šด๋กœ๋“œ


    ๋•Œ๋•Œ๋กœ ์ธํ„ฐ๋„ท์—์„œ VPS๋กœ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.GUI๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๋ช…๋ นํ–‰์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด ์–ด๋–ค ์ด์œ ๋กœ๋“  ๊ตฌ๊ธ€ ์‚ฌ์ง„์„ ๋‚ด ๋ถ€ํšŒ์žฅ์—๊ฒŒ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์‹ถ๋‹ค.
    ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์ฐ์€ ์•„๋ฆ„๋‹ค์šด ๊ณจํ”„ ์‚ฌ์ง„์ด๋‹ค - https://raw.githubusercontent.com/zachgoll/example-web-assets/main/golf-image.jpg
    ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ VPS๋กœ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    wget -O my-custom-picture.jpg https://raw.githubusercontent.com/zachgoll/example-web-assets/main/golf-image.jpg
    
    ์ด๊ฒƒ์€ ์‚ฌ์ง„์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ my-custom-picture.jpg ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ๋ชจ๋“  ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

    ์›๊ฒฉ ์‹œ์Šคํ…œ์—์„œ VSCode ์‚ฌ์šฉ


    ๋ฌผ๋ก  VPS์˜ ๋ชจ๋“  ๊ฐœ๋ฐœ ์ˆ˜์š”๋ฅผ ์ถฉ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ดVim ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, VSCode์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด ํ’๋ถ€ํ•œ ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.rmate ๋ช…๋ น์˜ ๋„์›€์œผ๋กœ VPS์˜ ํŒŒ์ผ์— VSCode๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ด๋ฅผ ์œ„ํ•ด VSCode๋ฅผ ์—ด๊ณ  Remote VSCode๋ผ๋Š” ํ™•์žฅ์ž๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.๋‹ค์šด๋กœ๋“œํ•œ ํ›„ ctrl-shift+P๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์„ค์ •์„ ์—ด๊ณ  "> ๊ธฐ๋ณธ ์„ค์ •: ์‚ฌ์šฉ์ž ์„ค์ • ์—ด๊ธฐ"๋ฅผ ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค.์•„๋ž˜๋กœ ์Šคํฌ๋กคํ•˜์—ฌ Extensions(ํ™•์žฅ) ๋“œ๋กญ๋‹ค์šด ๋ชฉ๋ก์„ ์ฐพ์€ ๋‹ค์Œ Remote VSCode(์›๊ฒฉ VSCode)๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.์„ค์ •์—์„œ ๋‹ค์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
    Remote Host: 127.0.0.1
    Remote Port: 52698
    Remote Onstartup: True (will be a checkbox)
    
    ์ด์ œ ctrl-shift P๋ฅผ ๋‹ค์‹œ ์ž…๋ ฅํ•˜๊ณ  "> ์›๊ฒฉ: ์„œ๋ฒ„ ์‹œ์ž‘"์„ ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค.์›๊ฒฉ ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.์ด์ œ ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์ž…๋ ฅํ•˜์—ฌ VPS์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
    ssh -R 52698:127.0.0.1:52698 root@157.230.167.2
    
    ๋ถ„๋ช…ํžˆ IP ์ฃผ์†Œ๋ฅผ ์ž์‹ ์˜ IP ์ฃผ์†Œ๋กœ ๋Œ€์ฒดํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.๊ทธ๋Ÿฐ ๋‹ค์Œ VPS์— ์œ ํ‹ธ๋ฆฌํ‹ฐrmate๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
    sudo wget -O /usr/local/bin/rmate https://raw.github.com/aurora/rmate/master/rmate
    sudo chmod a+x /usr/local/bin/rmate
    
    ์ด์ œ VPS์—์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ VSCode๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!
    rmate sample-file.txt
    

    ์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ