connect ssh

connect ssh

connect ssh 명령은 대상(target)에 대한 세션을 인가하고, 연결을 위해 SSH 클라이언트를 호출해요. 명령이 로컬 주소와 포트를 채워 넣어 줘요. -style 옵션으로 원하는 SSH 클라이언트를 지정할 수 있어요.

출처: HashiCorp Boundary docs

본문

SSH 헬퍼 명령은 호스트 키 Alias를 설정해요. Alias가 설정되면 SSH는 호스트 키 검증에 localhost:<port>를 쓰지 않고 다음 중 하나를 사용해요.

  • 호스트 집합이 연결된 대상에 연결할 때는 SSH 헬퍼 명령이 HostID를 alias로 설정해요.
  • 호스트에 직접 연결할 때도 SSH 헬퍼 명령이 HostID를 alias로 설정해요.
  • address 필드가 구성된 대상에 연결할 때는 SSH 헬퍼 명령이 TargetID를 alias로 설정해요.

예시

다음 예시는 ID가 ttcp_eTcZMueUYv인 대상에 세션을 인가하고, 추가 옵션 없이 기본 SSH 클라이언트를 호출해요.

$ boundary connect ssh -target-id ttcp_eTcZMueUYv

다음 예시는 ID가 ttcp_eTcZMueUYv인 대상에 세션을 인가하고, 인자를 호출된 SSH 바이너리에 그대로 전달해요. 이중 하이픈 뒤의 SSH 인자는 바이너리에 그대로 전송돼요.

$ boundary connect ssh -target-id ttcp_eTcZMueUYv -- -A
$ boundary connect ssh -target-scope-name Helpdesk -target-name ubuntu-server -- -A
$ boundary connect ssh -target-id ttcp_Gymo7Vcq7Y \
    -host-id hst_FrdNPd9Zm9 -- -l ubuntu -i private_key.pem

사용법 (Usage)

$ boundary connect ssh [options] [args]

이 명령은 대상 인가를 수행하거나 기존 인가 토큰을 사용해서 프록시된 SSH 연결을 시작해요.

connect 명령 옵션 (Connect command options)

  • -authz-token (string: "") — 대상에 대한 authorize-session 액션을 통해 Boundary 컨트롤러가 반환한 인증 문자열이에요. -target-id를 설정하지 않은 경우에만 이 옵션이 필요해요. 값을 -로 설정하면 표준 입력에서 인증 문자열을 읽으려고 시도해요. BOUNDARY_CONNECT_AUTHZ_TOKEN 환경 변수로도 지정할 수 있어요.
  • -exec (string: "") — 설정하면 워커에 연결한 뒤 실행할 바이너리를 지정해요. PATH에 있는 바이너리나 절대 경로여야 해요. 모든 명령 플래그 뒤에 --(공백 + 하이픈 두 개 + 공백)가 오면 그 뒤의 인자는 그 바이너리에 그대로 전달돼요. BOUNDARY_CONNECT_EXEC 환경 변수로도 지정할 수 있어요.
  • -host-id (string: "") — 대상의 호스트 집합 중 연결할 특정 호스트의 ID예요. 특정 호스트를 정하지 않으면 Boundary가 임의로 하나를 골라요.
  • -inactive-timeout=<duration> — 연결 사이에 경과할 수 있는 시간(초)으로, 이 시간이 지나면 Boundary가 사용하지 않는 세션을 닫아요. 오래 실행되는 프로세스 도중 프록시가 끊긴다면 이 값을 늘려도 돼요. -1을 쓰면 타임아웃을 완전히 끄는 거예요.
  • -target-id (string: "") — 세션을 인가할 대상의 ID예요. 이 옵션은 -authz-token과 함께 쓸 수 없어요.
  • -target-name (string: "") — 스코프 파라미터와 대상 이름으로 세션을 인가할 때 사용하는 대상 이름이에요.
  • -target-scope-id (string: "") — 스코프 파라미터와 대상 이름으로 세션을 인가할 때 사용하는 대상 스코프 ID예요. -scope-name과는 상호 배타적이에요. BOUNDARY_CONNECT_TARGET_SCOPE_ID 환경 변수로도 지정할 수 있어요.
  • -target-scope-name (string: "") — 스코프 파라미터와 대상 이름으로 세션을 인가할 때 사용하는 대상 스코프 이름이에요. -scope-id와는 상호 배타적이에요. BOUNDARY_CONNECT_TARGET_SCOPE_NAME 환경 변수로도 지정할 수 있어요.

템플릿 값 (Templated values)

명령 인자에 치환되는 템플릿 값들이 있고, 이 값들은 실행된 명령의 환경 변수로도 주입돼요:

  • {{boundary.ip}} (BOUNDARY_PROXIED_IP) — boundary connect가 연 리슨 소켓의 IP 주소예요.
  • {{boundary.port}} (BOUNDARY_PROXIED_PORT) — boundary connect가 연 리슨 소켓의 포트예요.
  • {{boundary.addr}} (BOUNDARY_PROXIED_ADDR) — host:port 형식의 주소예요. 본질적으로 {{boundary.ip}}:{{boundary.port}}와 같아요.

SSH 옵션

  • -style (string: "") — CLI가 SSH 클라이언트를 호출하는 방식을 지정해요. 값을 지정하지 않았다면 -exec에 적절한 기본값을 설정해 주기도 해요. 현재 이해되는 값은 ssh와 putty예요. 기본값은 ssh이에요. BOUNDARY_CONNECT_SSH_STYLE 환경 변수로도 지정할 수 있어요.
  • -username (string: "") — 클라이언트에 전달할 사용자 이름이에요. BOUNDARY_CONNECT_USERNAME 환경 변수로도 지정할 수 있어요.
  • -remote-command (string: "") — 원격 호스트에서 실행할 명령이에요. 완전한 명령줄을 지정하거나 추가 인자를 포함할 수도 있어요. 추가 인자를 포함한다면 명령 뒤에 공백으로 구분해서 덧붙여야 해요.

CLI 옵션 (CLI options)

명령별 옵션 외에, 모든 CLI 명령과 하위 명령에 공통으로 적용되는 옵션들이 있어요.

  • 연결 옵션 (Connection options)
  • 클라이언트 옵션 (Client options)
  • 출력 옵션 (Output options)
  • 환경 변수 (Environment variables)

더 알아보기 (Learn more)