Skip to main content
Skip table of contents

Multi Agent Seamless SSH 사용 가이드

Seamless SSH란 기존 터미널 사용성을 그대로 유지하면서 QueryPie를 통해 서버에 접속할 수 있는 기능입니다.

본 문서는 10.2.8 버전을 기준으로 Seamless SSH 사용법, 스펙 및 지원 범위를 안내합니다.

사용 방법

SSH config 설정 방법

기존의 ssh 명령어를 사용하기 위하여 SSH config 파일을 설정할 수 있습니다.

  1. .ssh 디렉토리로 이동하여 config 파일을 생성하거나 편집합니다.

CODE
cd ~/.ssh
vi config
  1. 다음 설정을 config 파일에 추가한 후 저장하고 종료합니다. (저장하려면 :wq를 누르세요)

CODE
Host {{Server Name}}
  Hostname {{Server URL}}
  Port {{Server SSH Port}}
  ProxyCommand qpctl ssh-proxy %r %h %p develop.dev.querypie.io
  1. 서버 간 URL과 포트가 겹치지 않는 경우 아래와 같이 설정할 수도 있습니다.

CODE
Host *
  ProxyCommand qpctl ssh-proxy %r %h %p develop.dev.querypie.io
  1. 간소화된 SSH 명령어를 사용하여 서버에 접속합니다.

CODE
ssh {{Server Account}}@{{Server Name}}

Shell Alias 설정 방법

기존의 ssh 명령어를 사용하기 위하여 SSH Alias 를 설정할 수 있습니다.

  1. 쉘 설정 파일을 엽니다.

Bash 쉘의 경우:

CODE
vi ~/.bashrc

Zsh 쉘의 경우:

CODE
vi ~/.zshrc
  1. 다음 줄을 쉘 설정 파일에 추가한 후 저장하고 종료합니다. (저장하려면 :wq를 누르세요)

CODE
alias qshdev='ssh -o ProxyCommand="qpctl ssh-proxy %r %h %p"'
  1. 변경 사항을 현재 쉘 세션에 적용합니다.

Bash 쉘의 경우:

CODE
source ~/.bashrc

Zsh 쉘의 경우:

CODE
source ~/.zshrc

또는 새 터미널 창을 열어도 됩니다.

  1. Alias를 사용하여 서버에 접속합니다.

CODE
qpctl host use develop.dev.querypie.io
qshdev {{Server Account}}@{{Server Name}}

기존 QueryPie User Agent와 달라진 점

기본 명령어

Seamless SSH는 QueryPie Multi Agent 설치시 함께 설치되는 다음 명령어를 이용하여 구동됩니다.

CODE
qpctl ssh-proxy %r %h %p [QueryPie Host]

기존 User Agent에서 사용하던 명령어는 다음과 같습니다.

CODE
qpa ssh %r %h %p

연결 에러 노출 방식

연결 단계에서 QueryPie Proxy 서버에 연결에 오류가 발생하면 기존 User Agent는 dialog 를 표시하고 있어 터미널 친화적이지 않았습니다.

Multi Agent는 터미널에 에러 내용이 노출되도록 변경되었습니다.

CODE
$ qpctl ssh manual@core.dev.querypie.io
qpctl: error: Connection error: Timeout

새롭게 추가된 기능

기본 호스트 지정

Multi Agent는 Seamless SSH를 사용하기 위해서 QueryPie Host를 입력해야 하는 불편함이 있습니다.

qpctl 명령에 사용하는 기본 서버를 지정하는 기능을 추가합니다.

  • 기본서버가 지정되면 qpctl ssh-proxy 명령에서 QueryPie Host 를 입력하지 않아도 됩니다.

  • 기본서버가 지정되어 있더라도 QueryPie Host 를 입력하면 이 값을 사용합니다.

Reset All Settings 으로 앱을 초기화 하면 기본 호스트 설정도 삭제됩니다.

qpctl host list

현재 등록된 QueryPie Hosts 목록을 확인합니다.

UI 에서 현재 선택한 QueryPie Host 가 아닙니다.

CODE
$ qpctl host list
QueryPie Hosts:
 - https://nightly.dev.querypie.io
 - http://t8.ec2.querypie.io (current)
 - https://t3.qa.querypie.io
 - https://t4.qa.querypie.io
 - https://t8.qa.querypie.io
 - https://t12.qa.querypie.io

qpctl host use

현재 등록된 QueryPie Hosts 목록을 보여주고 방향키로 선택합니다

CODE
$ qpctl host use
Use the arrow keys to navigate: ↓ ↑ → ←
QueryPie Hosts
  ▸ https://nightly.dev.querypie.io
    http://t8.ec2.querypie.io (current)
    https://t3.qa.querypie.io
    https://t4.qa.querypie.io
↓   https://t8.qa.querypie.io
CODE
Selected https://t4.qa.querypie.io
✔ Host changed to https://t4.qa.querypie.io

qpctl host use {QueryPie Host}

CODE
$ qpctl host use nightly.dev.querypie.io
✔ Host changed to https://nightly.dev.querypie.io

⚠️ 실험적 기능 - qpctl 직접 사용 ⚠️

Seamless SSH 를 사용하기 위해

  • ~/.ssh/config 를 설정하거나

  • ssh 명령에 -o ProxyCommand=qpctl ssh-proxy … 를 입력하는

경험은 자연스럽지 못합니다. 이에 QueryPie Multi Agent를 설치하였다면 ssh 접속을 위해 qpctl 명령어를 직접 사용할 수 있습니다.

  1. 사용자가 사용하고자 하는 ssh 명령어 앞에 qpctl 만 붙여주세요.

CODE
$ qpctl ssh ec2-user@core.dev.querypie.io -i ~/.ssh/querypie-dev.pem

 

  1. ~/.ssh/config 에 설정한 것도 qpctl 만 붙여주세요.

CODE
$ cat ~/.ssh/config

Host core-dev
Hostname core.dev.querypie.io
User ec2-user
IdentityFile ~/.ssh/querypie-dev.pem

$ qpctl ssh core-dev

지원 범위

최소 지원 버전

OpenSSH 6.7 이상이 필요합니다.

CODE
$ ssh -V
OpenSSH_9.8p1, LibreSSL 3.3.6

동작 방식

qpctl 명령이 ssh 클라이언트 명령을 wrapping 하여 ProxyCommand 옵션을 자동으로 붙여서 실행해줍니다.

  1. qpctl ssh command_line

  2. ssh -G command_line

    1. username, hostname, port 추출

  3. ssh command_line -o ProxyCommand=”qpctl ssh-proxy username hostname port

미지원 기능

사용자 지정 ProxyCommand

qpctl 가 ProxyCommand 를 사용하기 때문에 사용자 지정 ProxyCommand 는 사용할 수 없습니다.

CODE
$ qpctl ssh ec2-user@core.dev.querypie.io -o ProxyCommand="..."
qpctl: error: ProxyCommand option is not supported

scp

scp 는 아직 지원되지 않습니다.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.