๐ŸŒ SSH Tunneling

Contents

๊ฐœ์š”

VPN์„ ํ†ตํ•ด์„œ๋งŒ ์ ‘์†์ด ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„๋ฅผ ๋กœ์ปฌ์—์„œ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ssh tunneling์„ ์ด์šฉํ•œ port forwarding ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. SSH์˜ ์ •์˜๋ถ€ํ„ฐ Tunneling ๋ฐฉ๋ฒ•, ์ถ”๊ฐ€๋กœ Pycharm tunneling ์„ค์ • ๋ฐฉ๋ฒ•๋„ ๋ง๋ถ™์—ฌ ์„ค๋ช…ํ•ด๋ณธ๋‹ค.

SSH(Secure Shell)๋ž€?

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

์šฐ๋ฆฌ๋Š” ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์›๊ฒฉ ์„œ๋ฒ„์— ์‰ฝ๊ฒŒ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.

ssh -i "{identityFile}" username@host

ํ•„์ž๋Š” ์ฐธ๊ณ ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋ฒ„ ์ ‘์† ์ •๋ณด๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Termius ๋ผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ด์šฉํ•˜๊ณ  ์žˆ๋‹ค. (๋ถ€๋ถ„ ์œ ๋ฃŒ) Windows์˜ Putty ์™€ ์œ ์‚ฌํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ, SSH ์ ‘์† ์ •๋ณด๋ฅผ GUI๋ฅผ ํ†ตํ•ด ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

SSH Tunneling์ด๋ž€?

SSH Tunneling

SSH ํด๋ผ์ด์–ธํŠธ์™€ SSH ์„œ๋ฒ„ ์‚ฌ์ด์˜ ์—ฐ๊ฒฐ ํ†ต๋กœ ์ž์ฒด๋ฅผ SSH Tunnel์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. SSH Tunneling์€ ํ”„๋ก์‹œ์™€ ๋น„์Šทํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค. ์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋กœ์ปฌ(SSH ํด๋ผ์ด์–ธํŠธ)์—์„œ Remote Server๋ฅผ ํ†ตํ•ด Remote DB๋กœ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.

SSH Tunneling ์‰˜ ๋ช…๋ น์–ด

SSH Tunneling์— ๋Œ€ํ•ด ๊ฐœ๋…์„ ์ž˜ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์„ค์ • ๋ฐฉ๋ฒ•์€ ์‰ฝ๊ฒŒ ๋”ฐ๋ผํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ์€ ์›๊ฒฉ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์›๊ฒฉ DB ์„œ๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ช…๋ น์–ด์ด๋‹ค.

ssh -i {identityFile} -L {localPort}:{remoteDBHost}:{remoteDBPort} {remoteUsername}@{remoteHost}

identityFile์—๋Š” ์›๊ฒฉ ์„œ๋ฒ„๋ฅผ ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ .pem ํŒŒ์ผ ๋“ฑ์˜ ์œ„์น˜๋ฅผ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. localPort๋Š” ๋กœ์ปฌ์—์„œ ํ˜„์žฌ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”, ssh ํ„ฐ๋„์„ ์—ด์–ด๋„ ์ƒ๊ด€์—†๋Š” ํฌํŠธ๋ฅผ ํ•˜๋‚˜ ์ž„์˜๋กœ ์ง€์ •ํ•˜์—ฌ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. ์„ค์ • ํ›„ lsof -i {port}๋ฅผ ํ†ตํ•ด ํ„ฐ๋„๋ง ์„ค์ •์ด ์ž˜ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. -L ์˜ต์…˜์€ ์ง€์ •๋œ ์›๊ฒฉ ํ˜ธ์ŠคํŠธ์™€ ํฌํŠธ์— ์ „์†กํ•  ๋กœ์ปฌ ํฌํŠธ ์„ค์ •์„ ์œ„ํ•œ ์˜ต์…˜์ด๋‹ค.

์ค‘๊ฐœ ์„œ๋ฒ„์™€ ์›๊ฒฉ ์„œ๋ฒ„ ํ˜ธ์ŠคํŠธ ์ •๋ณด๋ฅผ ์•Œ๋งž๊ฒŒ ์ง€์ •ํ•˜๊ณ  ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ž˜ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•˜๋ฉด ๋‹น์—ฐํžˆ ssh ํ„ฐ๋„๋ง๋„ ์ œํ•œ๋˜๋ฏ€๋กœ ์ฃผ์˜ํ•˜๋„๋ก ํ•˜์ž.

Pycharm Database SSH Tunneling ์„ค์ • ๋ฐฉ๋ฒ•

Pycharm์—๋Š” SSH Tunneling์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” GUI๊ฐ€ ์ œ๊ณต๋œ๋‹ค.

์šฐ์ธก์˜ Database ํƒญ์„ ํด๋ฆญํ•˜๋ฉด ์ƒ๋‹จ์— + ๋ฒ„ํŠผ์ด ๋‚˜์˜จ๋‹ค. ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ Data Source์—์„œ Import ํ•ด์•ผํ•˜๋Š” DB์˜ ์ข…๋ฅ˜๋ฅผ ํด๋ฆญํ•ด๋ณด์ž.

Pycharm Database

DB ์ข…๋ฅ˜๋ฅผ ์„ ํƒํ–ˆ๋‹ค๋ฉด, SSH/SSL ํƒญ์„ ํด๋ฆญํ•˜์—ฌ Use SSH tunnel ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์ฒดํฌํ•œ๋‹ค. select box๊ฐ€ ํ™œ์„ฑํ™”๋˜๋ฉด ์šฐ์ธก์˜ ๋”๋ณด๊ธฐ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค.

Pycharm SSH/SSL

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ขŒ์ธก ์ƒ๋‹จ์˜ + ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ SSH ์„ค์ •์„ ์ถ”๊ฐ€ํ•ด๋ณด์ž. ์ธ์ฆ ์œ ํ˜•์— ๋”ฐ๋ผ Password, Key pair, OpenSSH configure ๋“ฑ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. Host, Port, Username, Authentication type ๋“ฑ์˜ ์„ค์ •์„ ์™„๋ฃŒํ–ˆ๋‹ค๋ฉด Test Connection์„ ํ†ตํ•ด ์ ‘์†์ด ์ž˜ ๋˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•ด๋ณด์ž.

Pycharm SSH Configuration

References


Written by@ugaemi
Record things I want to remember

๐Ÿฑ GitHub๐Ÿ“š Reading Space