QueryPie Community Edition is live ๐ŸŽ‰ Get it now for free Download today!

๋ฌด๋ฃŒ๋กœ ์‹œ์ž‘ํ•˜๊ธฐ
๋ฐฑ์„œ

๋ณด์•ˆ์„ฑ๊ณผ ์—…๋ฌด ํšจ์œจ์„ฑ์„ ๋™์‹œ์— ๋†’์ด๋Š” Seamless SSH Connection ์ „๋žต

CLI ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์œผ๋ฉด์„œ๋„ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๋Š” ๋งค๋„๋Ÿฌ์šด SSH ์—ฐ๊ฒฐ์„ ์œ„ํ•œ ์ตœ์ ์˜ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”. ์ถ”๊ฐ€ ์—์ด์ „ํŠธ ์—†์ด ๊ฐ•๋ ฅํ•œ ์ ‘๊ทผ ์ œ์–ด๋ฅผ ์œ ์ง€ํ•˜๋Š” QueryPie์˜ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Ryan Chae

Ryan Chae

Software Engineer

๋ผ์ด์–ธ์€ ์•ˆ์ „ํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•˜๋Š” ๋ฐ์— ํ’๋ถ€ํ•œ ๊ฒฝํ—˜์„ ๊ฐ€์ง„ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋กœ, QueryPie์—์„œ ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ํ•ด์™”์Šต๋‹ˆ๋‹ค. ํŠนํžˆ SSH ํ”„๋ก์‹œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ†ตํ•œ ์‰˜ ๋„ค์ดํ‹ฐ๋ธŒ ๋ช…๋ น์–ด ์ œ์–ด ์„ค๊ณ„์— ์ค‘์ถ”์ ์ธ ์—ญํ• ์„ ํ•˜๋ฉฐ, ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๊นŠ์€ ์ „๋ฌธ์„ฑ๊ณผ ํ˜์‹ ์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ†ตํ•ด ๋ณต์žกํ•œ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ณ€ํ™”ํ•˜๋Š” ๊ธฐ์—… ๊ณ ๊ฐ์˜ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถ˜ ์†”๋ฃจ์…˜ ๊ฐœ๋ฐœ๊ณผ ์กฐ์ง์˜ ๊ธฐ์ˆ ์  ์„ฑ์žฅ์„ ์ด๋„๋Š”๋ฐ ํƒ์›”ํ•œ ๋Šฅ๋ ฅ์„ ๋ฐœํœ˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

2025๋…„ 3์›” 10์ผ

๋ณด์•ˆ์„ฑ๊ณผ ์—…๋ฌด ํšจ์œจ์„ฑ์„ ๋™์‹œ์— ๋†’์ด๋Š” Seamless SSH Connection ์ „๋žต

์„œ๋ฌธ

๊ธฐ์กด ์ ‘๊ทผ์ œ์–ด ์†”๋ฃจ์…˜์˜ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ์ ์€ ๋ฌด์—‡์ผ๊นŒ์š”? ๋Œ€๋ถ€๋ถ„์˜ ์†”๋ฃจ์…˜์€ ์‚ฌ์šฉ์ž PC์— ๋ณ„๋„์˜ ์—์ด์ „ํŠธ๋ฅผ ์„ค์น˜ํ•˜๊ณ , GUI ๊ธฐ๋ฐ˜์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์„œ๋ฒ„์— ์ ‘์†ํ•  ๊ฒƒ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ธฐ์กด CLI ํ™˜๊ฒฝ์— ์ต์ˆ™ํ•œ ๊ฐœ๋ฐœ์ž์™€ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๋“ค์˜ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ํฌ๊ฒŒ ๋ฐฉํ•ดํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ถ•ํ‚ค์™€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™œ์šฉํ•œ ํšจ์œจ์ ์ธ ์ž‘์—… ๋ฐฉ์‹์„ ํฌ๊ธฐํ•˜๊ณ  GUI ์—์ด์ „ํŠธ๋ฅผ ํ†ตํ•œ ์ ‘์†๋งŒ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋ฉด, ์—…๋ฌด ํšจ์œจ์„ฑ์ด ํฌ๊ฒŒ ์ €ํ•˜๋  ์ˆ˜๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค.

QueryPie๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด 'Seamless SSH Connection'์„ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ๋ฒ•์€ ๋ณด์•ˆ์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ์‚ฌ์šฉ์ž๋“ค์ด ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ SSH ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ทธ๋Œ€๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ SSH ์„ค์ • ํŒŒ์ผ ์ˆ˜์ •๋งŒ์œผ๋กœ ์ ‘๊ทผ์ œ์–ด๋ฅผ ์ ์šฉํ•˜๋ฉด์„œ ๋™์‹œ์— ์ต์ˆ™ํ•œ CLI ํ™˜๊ฒฝ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์ด ์†”๋ฃจ์…˜์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

Host *.querypie.io
  Port 22
  ProxyCommand qpa ssh %r %h %p

์œ„ ์„ค์ • ํ›„์—๋Š” ๊ธฐ์กด์— SSH ์‚ฌ์šฉ ๋ฐฉ๋ฒ•๊ณผ ๋™์ผํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํƒ€๊ฒŸ ์„œ๋ฒ„์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ssh ryan@test.querypie.io

Seamless SSH Connection ๋™์ž‘ ๋ฐฉ์‹

Seamless SSH์˜ ๋™์ž‘ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” SSH ProxyCommand์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ์šฐ์„ ์ ์œผ๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

SSH ProxyCommand

ProxyCommand ๋Š” SSH ์—ฐ๊ฒฐ ๊ณผ์ •์—์„œ ์ค‘๊ฐ„ ๋‹จ๊ณ„๋กœ ๋‹ค๋ฅธ ์„œ๋ฒ„๋ฅผ ๊ฒฝ์œ ํ•ด ์ตœ์ข… ๋ชฉ์ ์ง€์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ SSH ํด๋ผ์ด์–ธํŠธ ์„ค์ •์—์„œ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, SSH ์—ฐ๊ฒฐ์ด ProxyCommand์— ์ง€์ •๋œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ด ์ตœ์ข… ๋ชฉ์ ์ง€์™€ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.


๋™์ž‘ ๋ฐฉ์‹

  1. ์‚ฌ์šฉ์ž ์‹คํ–‰: ์‚ฌ์šฉ์ž๊ฐ€ SSH ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ†ตํ•ด ์›๊ฒฉ ์„œ๋ฒ„์— ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ, SSH ํด๋ผ์ด์–ธํŠธ ์„ค์ •์— ProxyCommand๊ฐ€ ์ง€์ •๋˜์–ด ์žˆ๋‹ค๋ฉด, SSH ํด๋ผ์ด์–ธํŠธ๋Š” ์šฐ์„  ProxyCommand์— ์„ค์ •๋œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  2. ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ ์—ฐ๊ฒฐ:

  • stdin: SSH ํด๋ผ์ด์–ธํŠธ๋Š” ProxyCommand๋ฅผ ์‹คํ–‰ํ•  ๋•Œ, ํ•ด๋‹น ๋ช…๋ น์˜ stdin์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐ์ดํ„ฐ๋Š” ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์˜ค๋Š” ๋ช…๋ น์–ด๋‚˜ ํŒŒ์ผ ์ „์†ก ์š”์ฒญ ๋“ฑ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • stdout: SSH ํด๋ผ์ด์–ธํŠธ๋Š” ProxyCommand๋ฅผ ์‹คํ–‰ํ•  ๋•Œ, ํ•ด๋‹น ๋ช…๋ น์˜ stdin์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐ์ดํ„ฐ๋Š” ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์˜ค๋Š” ๋ช…๋ น์–ด๋‚˜ ํŒŒ์ผ ์ „์†ก ์š”์ฒญ ๋“ฑ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ์ „์†ก: ์ด ๊ณผ์ •์—์„œ, ProxyCommand๋Š” stdin์„ ํ†ตํ•ด ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ํƒ€๊ฒŸ ์„œ๋ฒ„์— ์ „์†กํ•˜๊ณ , ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ์˜ ์‘๋‹ต์„ stdout์„ ํ†ตํ•ด SSH ํด๋ผ์ด์–ธํŠธ๋กœ ๋‹ค์‹œ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ, SSH ํด๋ผ์ด์–ธํŠธ์™€ ํƒ€๊ฒŸ ์„œ๋ฒ„ ์‚ฌ์ด์— ์–‘๋ฐฉํ–ฅ ํ†ต์‹  ์ฑ„๋„์ด ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

ํŠน์ˆ˜๋ณ€์ˆ˜

  • %r โ†’ SSH ์ปค๋งจ๋“œ์— ์ž‘์„ฑ๋œ ํƒ€๊ฒŸ ์„œ๋ฒ„์˜ ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค.
  • %h โ†’ SSH ์ปค๋งจ๋“œ์— ์ž‘์„ฑ๋œ ํƒ€๊ฒŸ ์„œ๋ฒ„ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.
  • %p โ†’ SSH ์ปค๋งจ๋“œ์— ์ž‘์„ฑ๋œ ํƒ€๊ฒŸ ์„œ๋ฒ„ ํฌํŠธ ์ž…๋‹ˆ๋‹ค. (์˜ต์…˜: -p, ๊ธฐ๋ณธ๊ฐ’: 22)


QueryPie Agent - CLI ํ™•์žฅ

Seamless SSH Connection์—์„œ ProxyCommand์— ์‚ฌ์šฉ๋˜๋Š” qpa๋Š” QueryPie Agent์˜ ์‚ฌ์šฉ์ž์šฉ ์—์ด์ „ํŠธ ํด๋ผ์ด์–ธํŠธ์— CLI๋ฅผ ํ™•์žฅํ•œ ๊ฒƒ์œผ๋กœ QueryPie๋ฅผ ํ†ตํ•ด SSH ์ ‘์†์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. SSH ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ์€ Agent๋ฅผ ํ†ตํ•ด ํ„ฐ๋„๋ง์ด ๋˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•œ ์‚ฌ์šฉ์ž ์ธ์ฆ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.


์—ฐ๊ฒฐ ๊ตฌ์กฐ

SSH Client โ†’ Agent CLI โ†’ ARiSA Proxy Server โ†’ Target Server



์ปดํฌ๋„ŒํŠธ ์ •๋ฆฌ

์ปดํฌ๋„ŒํŠธ ์„ค๋ช…
SSHOpenSSH ํด๋ผ์ด์–ธํŠธ ์ž…๋‹ˆ๋‹ค.
Agent - CLI (qpa)ProxyCommand ํ†ตํ•ด ์‹คํ–‰๋˜๋Š” ์‰˜ ์ปค๋งจ๋“œ์ž…๋‹ˆ๋‹ค.
Agent์—์„  SubProcess ๋ผ๊ณ  ํ•˜๋ฉฐ MainProcess ๊ฐ„ ๋ฉ”์‹œ์ง•์„ ์œ„ํ•œ IPC ํ†ต์‹ ์ด ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
Agent - Main๋กœ๊ทธ์ธ ๋ฐ ํ„ฐ๋„๋ง ๋“ฑ UI ๋กœ ์‹คํ–‰๋˜๋Š” ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ ์ž…๋‹ˆ๋‹ค.
APIagentService.proto ์— ์ž‘์„ฑ๋œ ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ & ์ œ๊ณตํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.
TargetServer๋ชฉ์  ์„œ๋ฒ„ ์ž…๋‹ˆ๋‹ค. (e.g., test.querypie.com)

ํ™œ์šฉ ์˜ˆ์‹œ

Seamless SSH Connection ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜๋ฉด ๊ธฐ์กด์— ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž๋“ค์ด ์‚ฌ์šฉํ•˜๋˜ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ…Œํฌ๋‹‰๋“ค์„ ์ ‘๊ทผ์ œ์–ด ์†”๋ฃจ์…˜์ด ์žˆ๋Š” ํ™˜๊ฒฝ์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 1๋ฒˆ๋ถ€ํ„ฐ 10๋ฒˆ๊นŒ์ง€์˜ ํ…Œ์ŠคํŠธ ์„œ๋ฒ„์— ๋™์ผํ•˜๊ฒŒ ํŠน์ • ์„ค์ •์„ ์ ์šฉํ•ด์•ผ ํ•  ๊ฒฝ์šฐ, ssh ์ ‘์†๋ถ€ํ„ฐ ๋ช…๋ น์–ด ์ˆ˜ํ–‰๊นŒ์ง€์— ์ด๋ฅด๋Š” ์ž‘์—…์„ ํ•˜๋‚˜ ํ•˜๋‚˜์”ฉ ์ž…๋ ฅํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋ฒˆ๊ฑฐ๋กญ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•ด์„œ ๋™์ผ ๋ช…๋ น์–ด๋ฅผ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ์ˆ˜ํ–‰๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

iTerm2์„ ์—ฌ๋Ÿฌ ์ฐฝ์œผ๋กœ ๋ถ„๋ฆฌ ํ›„ ๋™์‹œ ์ปค๋งจ๋“œ ์ž…๋ ฅ

iTerm2์—์„œ cmd + d ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ฐฝ์ด ์„ธ๋กœ๋กœ ๋ถ„ํ• ๋˜๊ณ , cmd + shift + d๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ฐฝ์ด ๊ฐ€๋กœ๋กœ ๋ถ„ํ• ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  option + cmd + i๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ถ„ํ• ๋œ ๋ชจ๋“  pane์— ๋™์ผํ•œ ๋ช…๋ น์–ด๊ฐ€ ์ž…๋ ฅ๋˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ์ ‘์†ํ•  ๋•Œ ์ตœ์†Œํ•œ์˜ ์ž…๋ ฅ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



QueryPie์—์„œ ์ œ๊ณตํ•˜๋Š” Seamless SSH Connection ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜๋ฉด ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ ์ด๋Ÿฐ ๋ฐฉ๋ฒ•๋“ค๋„ ์‚ฌ์šฉ์„ฑ์˜ ๋ณ€ํ™” ์—†์ด ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„ ๋‹ค์ค‘ ์ ‘์†์„ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ

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

#!/bin/bash
# ์„œ๋ฒ„ ๋ฆฌ์ŠคํŠธ
SERVERS=("test1.querypie.io" "test2.querypie.io" "test3.querypie.io" "test4.querypie.io")
# ์‚ฌ์šฉ์ž ๊ณ„์ •
USER="ryan"
# ์‹คํ–‰ํ•  ๋ช…๋ น
COMMANDS=(
  "echo 'TMOUT=300' >> ~/.bashrc"
  "source ~/.bashrc"
)
# ์„œ๋ฒ„ ์ ‘์† ๋ฐ ๋ช…๋ น ์‹คํ–‰
for SERVER in "${SERVERS[@]}"; do
  echo "Connecting to ${SERVER}..."
  ssh "${USER}@${SERVER}" <<EOF
    $(printf "%s\n" "${COMMANDS[@]}")
EOF
  if [ $? -eq 0 ]; then
    echo "Commands executed successfully on ${SERVER}"
  else
    echo "Failed to execute commands on ${SERVER}"
  fi
done

test ์„œ๋ฒ„ 1๋ฒˆ๋ถ€ํ„ฐ 4๋ฒˆ๊นŒ์ง€ ์ ‘์†ํ•ด์„œ ํƒ€์ž„์•„์›ƒ ์„ค์ •์„ ๋ฐ”๊พธ๋Š” ์Šคํฌ๋ฆฝํŠธ์ธ๋ฐ, ๋ชจ๋“  ์„œ๋ฒ„์— interactive shell์„ ๋„์›Œ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•  ํ•„์š”์—†์ด ์Šคํฌ๋ฆฝํŠธ ํ•œ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋ฉด ๋˜๋ฏ€๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

tmux ๋‹ค์ค‘ ์ ‘์†์„ ์ด์šฉํ•œ ์—ฌ๋Ÿฌ ์„œ๋ฒ„ ๋™์‹œ ์ ‘์†ํ•˜๊ธฐ

tmux-cssh๋ผ๋Š” ์˜คํ”ˆ์†Œ์Šค๋ฅผ ์ด์šฉํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋™์‹œ์— ์ ‘์†ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

tmux-cssh -ns -ss 
'ssh -oProxyCommand='\''qpa ssh %r %h %p'\'' 
-oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null' 
-u admin test{001..01}.querypie.io


๊ฒฐ๋ก 



์ ‘๊ทผ์ œ์–ด ์†”๋ฃจ์…˜์˜ ๋„์ž…์€ ์กฐ์ง์˜ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๋Š” ์ค‘์š”ํ•œ ๋‹จ๊ณ„์ด์ง€๋งŒ, ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ €ํ•ดํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด GUI ๊ธฐ๋ฐ˜ ์ ‘๊ทผ์ œ์–ด ์†”๋ฃจ์…˜์€ ๋ณด์•ˆ์€ ๊ฐ•ํ™”ํ–ˆ์ง€๋งŒ, CLI ํ™˜๊ฒฝ์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฐœ๋ฐœ์ž์™€ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๋“ค์˜ ์ƒ์‚ฐ์„ฑ์„ ์ €ํ•˜์‹œํ‚ค๋Š” ๋ถ€์ž‘์šฉ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

QueryPie์˜ Seamless SSH Connection์€ ๋ณด์•ˆ์„ฑ๊ณผ ํŽธ์˜์„ฑ ๋‘ ๊ฐ€์ง€ ๋ชฉํ‘œ๋ฅผ ๋ชจ๋‘ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ ์ ‘๊ทผ์ œ์–ด๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ๋„, ์‚ฌ์šฉ์ž๋“ค์ด ์ต์ˆ™ํ•œ SSH ์›Œํฌํ”Œ๋กœ์šฐ์™€ ๋„๊ตฌ๋“ค(iTerm2 ๋‹ค์ค‘ ์ฐฝ, ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ, tmux ๋“ฑ)์„ ๊ทธ๋Œ€๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•œ ์„ค์ • ๋ณ€๊ฒฝ๋งŒ์œผ๋กœ ๊ธฐ์กด ์ž‘์—… ๋ฐฉ์‹์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์กฐ์ง ์ „์ฒด์˜ ์ƒ์‚ฐ์„ฑ ์ธก๋ฉด์—์„œ ํฐ ์ด์ ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ QueryPie๋Š” ๋ณด์•ˆ์„ฑ๊ณผ ์‚ฌ์šฉ์„ฑ ์‚ฌ์ด์˜ ๊ท ํ˜•์„ ์ฐพ์•„, ์‚ฌ์šฉ์ž๋“ค์ด ์ ‘๊ทผ์ œ์–ด ์†”๋ฃจ์…˜ ๋„์ž…์œผ๋กœ ์ธํ•œ ๋ถˆํŽธํ•จ ์—†์ด ํšจ์œจ์ ์œผ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ณด์•ˆ์„ฑ๊ณผ ์—…๋ฌด ํšจ์œจ์„ฑ์„ ๋™์‹œ์— ๋†’์ด๋Š” Seamless SSH Connection ์ „๋žต | QueryPie