๐ ํ ์๋ฒ ๊ตฌ์ถ: VPN + SSH ๊ฐ๋ฐ ํ๊ฒฝ + HTTPS Web ์๋ฒ ์ค์
์ด ๋ฌธ์๋ VPN์ ํ์ฉํ ์์ ํ ์๊ฒฉ ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ๊ฐ์ธ ์น ์๋ฒ ๊ตฌ์ถ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ ๊ฐ์ด๋์
๋๋ค.
์ค์ ์ ์๋ฃํ๋ฉด, ์ธ๋ถ์์ VPN์ ํตํด ์์ ํ๊ฒ ํ ์๋ฒ์ ์ ์ํ๊ณ ๊ฐ๋ฐํ๋ฉฐ, ๊ฐ์ธ HTTPS ์น ์๋ฒ๋ฅผ ์ด์ํ ์ ์์ต๋๋ค.
๐ 1. VPN ํ๊ฒฝ ์ค์
ํ ์๋ฒ๊ฐ ๊ณต์ธ IP ์์ด๋ ์ธ๋ถ์์ ์ ์ ๊ฐ๋ฅํ๋๋ก ipTIME ๊ณต์ ๊ธฐ์ VPN์ ์ค์ ํฉ๋๋ค.
1๏ธโฃ ipTIME ๊ณต์ ๊ธฐ์์ DDNS ์ค์ (์ธ๋ถ ์ ์ ์ฃผ์ ๋ง๋ค๊ธฐ)
- ์น ๋ธ๋ผ์ฐ์ ์์ http://192.168.0.1 ์ ์ (ipTIME ๊ณต์ ๊ธฐ ๊ด๋ฆฌ์ ํ์ด์ง)
- ๊ณ ๊ธ ์ค์ → ํน์ ๊ธฐ๋ฅ → DDNS ์ค์ ์ด๋
- "ipTIME DDNS ์ฌ์ฉ" ํ์ฑํ
- ์ํ๋ ๋๋ฉ์ธ ์ ๋ ฅ (์: myserver.iptime.org)
- ์ค์ ์ ์ฅ ํ, ์ธ๋ถ์์ myserver.iptime.org๋ก ์ ์ ๊ฐ๋ฅ
2๏ธโฃ ipTIME ๊ณต์ ๊ธฐ์์ VPN ์๋ฒ ํ์ฑํ
- ๊ณ ๊ธ ์ค์ → VPN ์๋ฒ ์ค์ ์ด๋
- "OpenVPN ์๋ฒ ํ์ฑํ" ์ ํ
- VPN ๊ณ์ ์์ฑ (์ฌ์ฉ์๋ช & ๋น๋ฐ๋ฒํธ ์ค์ )
- VPN ์๋ฒ ์ค์ ์๋ฃ ํ, ํด๋ผ์ด์ธํธ์์ OpenVPN ์ ์ ๊ฐ๋ฅ
3๏ธโฃ ์ธ๋ถ ๊ธฐ๊ธฐ์์ VPN ํด๋ผ์ด์ธํธ ์ ์
๐ MacBook์ OpenVPN ํด๋ผ์ด์ธํธ ์ค์น & VPN ์ฐ๊ฒฐ
- Tunnelblick ๋ค์ด๋ก๋ & ์ค์น (macOS์ฉ OpenVPN ํด๋ผ์ด์ธํธ)
- ipTIME ๊ณต์ ๊ธฐ์์ ์ ๊ณตํ๋ OpenVPN ์ค์ ํ์ผ(.ovpn)์ ๋ค์ด๋ก๋ํ์ฌ Tunnelblick์ ์ถ๊ฐ
- VPN ๋ก๊ทธ์ธ (myserver.iptime.org + ์ค์ ํ ๊ณ์ & ๋น๋ฐ๋ฒํธ ์ ๋ ฅ)
- VPN์ด ์ฑ๊ณต์ ์ผ๋ก ์ฐ๊ฒฐ๋๋ฉด ๋ด๋ถ ๋คํธ์ํฌ(192.168.xx.xx) ์ ๊ทผ ๊ฐ๋ฅ!
๐ 2. ํ์๋ฒ ์ ์ ํ VSCode Remote SSH ๊ฐ๋ฐ ํ๊ฒฝ ์ค์
VPN ์ฐ๊ฒฐ ํ, ์ธ๋ถ์์ ์์ ํ๊ฒ SSH ์ ์ํ์ฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ถํฉ๋๋ค.
1๏ธโฃ SSH ํฌํธ ๋ฐ ๋ฐฉํ๋ฒฝ ์ค์
๐ ํ ์๋ฒ์์ SSH ํฌํธ(22) ์ ํ (VPN ์ฐ๊ฒฐํ ๊ธฐ๊ธฐ๋ง ์ ์ ๊ฐ๋ฅํ๋๋ก ์ค์ )
sudo ufw allow from 192.168.0.0/24 to any port 22
๐ ipTIME ๊ณต์ ๊ธฐ์์๋ VPN ๋ด๋ถ ๋คํธ์ํฌ์์๋ง 22๋ฒ ํฌํธ ์ ๊ทผ ํ์ฉ
2๏ธโฃ MacBook์์ SSH ์ ์ ํ์ธ
๐ VPN ์ฐ๊ฒฐ ํ SSH ์ ์
ssh username@192.168.xx.xx # ํ์๋ฒ ๋ด๋ถ IP๋ก ์ ์
๐ Putty (Windows) ๋๋ macOS ํฐ๋ฏธ๋์์ ์ ์ ์ ์ ํ์ธ
3๏ธโฃ VSCode Remote SSH ์ค์
๐ VSCode์์ SSH ์๊ฒฉ ์ ์ ์ค์
- VSCode ์คํ → "Remote - SSH" ํ์ฅ ํ๋ก๊ทธ๋จ ์ค์น
- "Ctrl + Shift + P" → "Remote-SSH: Connect to Host" ์ ํ
- SSH ์ค์ ํ์ผ(~/.ssh/config)์ ๋ค์ ๋ด์ฉ ์ถ๊ฐ
Host myserver HostName 192.168.xx.xx User username IdentityFile ~/.ssh/id_rsa
- "myserver" ์ ํ ํ ์๊ฒฉ ์ ์
- ํ ์๋ฒ์ ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ฑ (Docker, Node.js, Python ๋ฑ ์ค์น ๊ฐ๋ฅ)
๐ 3. HTTPS Web Server ํ๊ฒฝ ์ค์ (nginx + ๊ฐ์ธ SSL ์ ์ฉ)
VPN ์ฐ๊ฒฐ ํ ๊ฐ์ธ HTTPS ์น ์๋ฒ๋ฅผ ๊ตฌ์ถํ์ฌ VPN์ ํตํด์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ์ค์ ํฉ๋๋ค.
1๏ธโฃ nginx ์ค์น
๐ ํ ์๋ฒ์์ nginx ์ค์น
sudo apt update && sudo apt install nginx -y
๐ nginx ์๋น์ค ์คํ ๋ฐ ๋ถํ ์ ์๋ ์คํ
sudo systemctl startnginx
sudo systemctl enable nginx
๐ ๊ธฐ๋ณธ ์น ํ์ด์ง ํ์ธ
curl http://localhost # nginx ๊ธฐ๋ณธ index.html ํ์
2๏ธโฃ ๊ฐ์ธ SSL ์ธ์ฆ์ ์์ฑ
๐ Let's Encrypt ์ฌ์ฉํ์ง ์๊ณ ๊ฐ์ธ SSL ํค ์์ฑ
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/myserver.key -out /etc/ssl/certs/myserver.crt
๐ SSL ์ค์ ์ ์ฉ (nginx ์ค์ ํ์ผ ์์ )
sudo nano /etc/nginx/sites-available/default
๐ nginx ์ค์ ์์
server {
listen 443 ssl;
server_name myserver.iptime.org;
ssl_certificate /etc/ssl/certs/myserver.crt;
ssl_certificate_key /etc/ssl/private/myserver.key;
location / {
root /var/www/html;
index index.html;
}
allow 192.168.0.0/24;
deny all;
}
๐ nginx ์ค์ ์ ์ฉ ํ ์๋น์ค ์ฌ์์
sudo systemctl restart nginx
3๏ธโฃ ๋ฐฉํ๋ฒฝ ๋ฐ ipTIME ๊ณต์ ๊ธฐ ์ค์
๐ ํ ์๋ฒ ๋ฐฉํ๋ฒฝ ์ค์ (VPN ์ฐ๊ฒฐํ ์ฌ์ฉ์๋ง 443 ํฌํธ ์ ๊ทผ ํ์ฉ)
sudo ufw allow from 192.168.0.0/24 to any port 443
๐ ipTIME ๊ณต์ ๊ธฐ์์๋ VPN ๋ด๋ถ ๋คํธ์ํฌ์์๋ง 443 ํฌํธ ์ ๊ทผ ํ์ฉ
๐ 4. ์ต์ข ํ ์คํธ
๐น VPN ์ฐ๊ฒฐ O โ
- https://myserver.iptime.org ์ ์ ์ nginx ์น ํ์ด์ง ์ ์ ํ์
- ssh username@192.168.xx.xx ์ ์ ์ ์
๐น VPN ์ฐ๊ฒฐ X โ
- https://myserver.iptime.org ์ ์ ๋ถ๊ฐ
- ssh myserver.iptime.org ์ ์ ๋ถ๊ฐ (๋ณด์ ์ ์ง)
โ ์ต์ข ๊ฒฐ๋ก
๐ฏ VPN์ ํตํ ๋ณด์ ์ ์ + ์๊ฒฉ ๊ฐ๋ฐ ํ๊ฒฝ + ๊ฐ์ธ HTTPS ์น ์๋ฒ ๊ตฌ์ถ ์๋ฃ!
โ VPN์ ํตํด์๋ง SSH & ์น ์๋ฒ ์ ๊ทผ ๊ฐ๋ฅ → ๊ฐ๋ ฅํ ๋ณด์ ์ ์ง
โ ์ธ๋ถ์์ VSCode Remote SSH๋ก ํธ๋ฆฌํ๊ฒ ๊ฐ๋ฐ ๊ฐ๋ฅ
โ HTTPS ์น ์๋ฒ(nginx) + ๊ฐ์ธ SSL ์ ์ฉ → ๊ฐ์ธ ์น ์๋น์ค ์ด์ ๊ฐ๋ฅ
* GPT๋ฅผ ํ์ฉํด ๊ฐ์ธ์ ์ธ ํ์ฉ Scene์ ์ ๋ฆฌํ์ต๋๋ค. ๋ง์ ํ์ฉ ๋ฐ๋๋๋ค.
'Development > Story' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Git] ์ค์ ๋ก ๊ฒฝํํด ๋ณธ Git-Flow์ ๋ํ ์ ๋ฆฌ (0) | 2024.12.11 |
---|