Infograb logo
tsh CLI reference

tsh는 Teleport 사용자가 사용하는 CLI 클라이언트입니다. 사용자는 클러스터의 현재 및 과거 세션과 상호 작용하고, 노드 간에 파일을 복사하며, 클러스터에 대한 정보를 나열할 수 있습니다.

tsh environment variables

환경 변수는 TSH 클라이언트를 구성하며 플래그를 반복적으로 사용하지 않도록 도와줍니다.

환경 변수설명예시 값
TELEPORT_AUTH정의된 SAML, OIDC, 또는 GitHub 인증 커넥터의 이름 (또는 로컬 사용자)okta
TELEPORT_MFA_MODEMFA 및 비밀번호 없는 인증의 선호 모드otp
TELEPORT_CLUSTERTeleport 루트 또는 리프 클러스터의 이름cluster.example.com
TELEPORT_LOGIN원격 호스트에서 기본적으로 사용할 로그인 이름root
TELEPORT_LOGIN_BIND_ADDR로그인 명령 웹훅에 바인딩할 주소 (형식: host:port)host:port
TELEPORT_LOGIN_BROWSERSSO 로그인을 위해 시스템 기본 브라우저가 열리지 않도록 none으로 설정. 값이 none이 아니면, tsh가 시스템 기본 브라우저를 엽니다.none
TELEPORT_PROXYTeleport 프록시 서버의 주소cluster.example.com:3080
TELEPORT_HOMEtsh 구성 및 데이터의 홈 위치/directory
TELEPORT_USERTeleport 사용자 이름alice
TELEPORT_ADD_KEYS_TO_AGENT사용자 인증서를 실행 중인 SSH 에이전트에 저장할지 여부 지정yes, no, auto, only
TELEPORT_USE_LOCAL_SSH_AGENT로컬 SSH 에이전트 통합 비활성화 또는 활성화true, false
TELEPORT_GLOBAL_TSH_CONFIG기본 /etc/tsh.yaml에서 전역 tsh 구성 파일 위치 변경/opt/teleport/tsh.yaml
TELEPORT_HEADLESS헤드리스 인증 사용 여부true, false, 1, 0
TELEPORT_IDENTITY_FILEID 파일의 경로/opt/identity

tsh global flags

이름기본값허용 값설명
-l, --login없음아이덴티티 이름Teleport 사용자가 사용할 로그인 아이덴티티
--proxy없음host:https_port[,ssh_proxy_port]Teleport 프록시 서비스 주소
--user$USER없음Teleport 사용자 이름
--ttl720 (12시간)정수tsh 사용자를 위한 인증서의 유효 기간(분)
-i, --identity없음문자열 파일 경로아이덴티티 파일
--cert-formatstandardstandard 또는 oldsshSSH 인증서 형식. oldssh는 사용자 역할을 SSH 인증서에 인코딩하는 사용자 정의 메타데이터를 허용하지 않는 이전 버전의 OpenSSH 서버를 지원함.
--insecure없음없음서버의 인증서와 호스트 이름을 검증하지 않음. 테스트 환경에서만 사용.
--authlocal정의된 인증 커넥터의 모든 값, 예: passwordless, local (즉, 인증 커넥터 없음)사용할 인증 커넥터 유형 지정.
--mfa-modeautoauto, cross-platform, platform, 또는 otpMFA 및 비밀번호 없는 인증의 선호 모드.
--skip-version-check없음없음서버와 클라이언트 간의 버전 확인 건너뛰기.
-d, --debug없음없음표준 출력으로 자세한 로깅
-J, --jumphost없음점프 호스트SSH 점프 호스트
--headless없음없음인증을 위한 헤드리스 WebAuthn 사용
--mlockautoauto, off, best_effort, strict프로세스 메모리를 잠가서 클라이언트 비밀이 디스크로 스왑되는 것을 방지.

tsh apps ls

사용 가능한 모든 애플리케이션을 나열합니다:

tsh apps ls

tsh clusters

tsh clusters [<flags>]

Flags

이름기본 값허용 값설명
-q, --quiet없음없음출력에 헤더 없음

Global flags

이 플래그들은 모든 명령어에서 사용할 수 있습니다: --login, --proxy, --user, --ttl, --identity, --cert-format, --insecure, --auth, --skip-version-check, --debug, --jumphost. tsh help <subcommand>를 실행하거나 글로벌 플래그 섹션을 참조하세요.

Examples

tsh clusters

Cluster Name Status

------------ ------

staging online

production offline


tsh clusters --quiet

staging online

production offline

tsh config

Teleport에서 관리하는 자격 증명을 사용하여 SSH 클라이언트를 통해 클러스터의 호스트에 연결할 수 있도록 OpenSSH 구성 세부 정보를 출력하세요.

tsh config

Flags

이름기본 값허용 값설명
-l, --login없음Linux 사용자 이름기본적으로 사용할 Linux 사용자 이름. SSH 설정의 User 옵션으로 변환됩니다.
-p, --port3022포트기본 SSH 포트. SSH 설정의 Port 옵션으로 변환됩니다.

Examples

OpenSSH 구성 파일을 콘솔에 출력

tsh config

Teleport 구성을 SSH 설정에 추가

tsh config >> ~/.ssh/config

tsh device enroll

현재 장치를 신뢰할 수 있는 장치로 등록하세요.

tctl devices enroll를 통해 생성된 장치 등록 토큰이 필요합니다.

tsh device enroll --token=TOKEN

Flags

이름기본값허용 값설명
--token없음문자열장치 등록 토큰

Examples

tsh device enroll --token=AAAAAAAAAAAAAAAAAAAAAAAA-this-is-an-example
Device "C00AA0AAAA0A"/macOS enrolled

tsh gcloud

Teleport 애플리케이션 서비스를 통해 gcloud CLI 명령을 프록시하세요. gcloud는 Google Cloud와 상호 작용하는 도구입니다. 사용자는 tsh gcloud 명령을 실행하기 전에 Teleport에서 Google Cloud 애플리케이션에 인증되어 있어야 합니다.

tsh gcloud [--app] [<command>]

Arguments

command: 인수와 플래그를 포함하여 실행하는 gcloud 명령입니다.

Flags

이름기본 값허용 값설명
--app현재 로그인된 Google Cloud 애플리케이션tsh apps ls로 나열된 Google Cloud 애플리케이션 이름여러 Google Cloud 애플리케이션에 로그인한 경우 명령을 실행할 애플리케이션

Global flags

다음 플래그들은 모든 명령어에서 사용할 수 있습니다: --login, --proxy, --user, --ttl, --identity, --cert-format, --insecure, --auth, --skip-version-check, --debug, --jumphost.
<subcommand>에 대해 tsh help <subcommand>를 실행하거나 Global Flags 섹션을 참조하세요.

Examples

tsh gcloud compute instances list

tsh gsutil

Teleport Application Service를 통해 gsutil CLI 명령을 프록시합니다. gsutil은 Google Cloud Storage와 상호작용하는 도구입니다. 사용자는 tsh gsutil 명령을 실행하기 전에 Teleport에서 Google Cloud 애플리케이션에 인증되어 있어야 합니다.

tsh gsutil [--app] [<command>]

Arguments

command: 인수와 깃발을 포함한 'gsutil' 실행 명령입니다.

Flags

이름기본 값허용 값설명
--app현재 로그인된 Google Cloud 애플리케이션tsh apps ls로 나열된 Google Cloud 애플리케이션 이름여러 Google Cloud 애플리케이션에 로그인한 경우 명령을 실행할 애플리케이션

Global flags

다음 플래그들은 모든 명령어에서 사용할 수 있습니다: --login, --proxy, --user, --ttl, --identity, --cert-format, --insecure, --auth, --skip-version-check, --debug, --jumphost.
<subcommand>에 대해 tsh help <subcommand>를 실행하거나 글로벌 플래그 섹션을 참조하세요.

Examples

tsh gsutil ls

tsh 도움말

도움말을 출력합니다:

tsh help

tsh 참여

활성 세션에 참여합니다:

tsh join [<flags>] <session-id>

인자

<session-id>

  • session-id 활성 Teleport 세션의 UUID로, 세션 내에서 teleport status 명령어를 통해 얻을 수 있습니다.

플래그

이름기본 값허용 값설명
--cluster없음클러스터 이름연결할 클러스터 지정

전역 플래그

이 플래그는 모든 명령에 사용할 수 있습니다: --login, --proxy, --user, --ttl, --identity, --cert-format, --insecure, --auth, --skip-version-check, --debug, --jumphost. tsh help <subcommand>를 실행하거나 전역 플래그 섹션을 참조하세요.

예제

teleport 사용자 joe를 ec2-user로 사용하는 세션 참여

tsh --user=joe --login=ec2-user join <session-id>

tsh kube 로그인

Kubernetes 클러스터에 로그인하세요. tsh kube ls를 사용하여 연결된 클러스터를 발견하세요.

tsh kube login <kube-cluster>

k8s 클러스터에 로그인 (gke_bens-demos_us-central1-c_gks-demo)

tsh kube login gke_bens-demos_us-central1-c_gks-demo

Kubernetes 클러스터 "gke_bens-demos_us-central1-c_gks-demo"에 로그인했습니다. 연결 테스트를 위해 'kubectl version'을 사용해 보세요.


로그인 시, kubeconfig는 첫 번째 클러스터(알파벳순)로 설정됩니다.

kubectl config current-context

aws-gke_bens-demos_us-central1-c_gks-demo


하지만 모든 클러스터는 컨텍스트로 채워져 있습니다.

kubectl config get-contexts

CURRENT NAME CLUSTER AUTHINFO NAMESPACE

* aws-gke_bens-demos_us-central1-c_gks-demo aws aws-gke_bens-demos_us-central1-c_gks-demo

aws-microk8s aws aws-microk8s

플래그

이름기본 값허용 값설명
--allfalseBoolean현재 Teleport 사용자가 접근할 수 있는 모든 Kubernetes 클러스터에 대한 kubeconfig를 생성할지 여부. false일 경우, tshtsh kube login 명령어에서 지정한 클러스터에 대한 kubeconfig만 생성합니다.
--as없음문자열현재 Teleport 사용자가 지정된 Kubernetes 클러스터에 인증할 때 로그인할 Kubernetes 사용자.

Kubernetes 대리인 사용, 따라서 Teleport 사용자의 Kubernetes 사용자는 대상 사용자를 대리하는 권한이 있어야 합니다.
--as-groups없음문자열현재 Teleport 사용자가 지정된 Kubernetes 클러스터에 인증할 때 로그인할 Kubernetes 그룹.

Kubernetes 대리인 사용, 따라서 Teleport 사용자의 Kubernetes 사용자는 대상 그룹을 대리하는 권한이 있어야 합니다.

여러 번 이 플래그를 포함하여 여러 Kubernetes 그룹을 대리할 수 있습니다.
--cluster없음문자열주어진 Kubernetes 클러스터에 연결하기 위해 로그인할 Teleport 클러스터의 이름.
-n, --kube-namespace없음문자열사용자가 로그인하는 클러스터 내에서 기본으로 구성할 Kubernetes 네임스페이스의 이름.

tsh kube ls

Kubernetes 클러스터 목록:

tsh kube ls

예제

tsh kube ls

Kube Cluster Name Selected

------------------------------------- --------

gke_bens-demos_us-central1-c_gks-demo *

microk8s

tsh 로그인

클러스터에 로그인합니다. tsh가 로그인할 때, 자동 만료 키는 ~/.tsh에 저장되며 기본적으로 12시간 유효합니다. 다른 시간을 지정하면 --ttl 플래그가 적용됩니다(서버 측 구성에 의해 제한됨).

tsh login [<flags>] [<cluster>]

인자

플래그

이름기본 값허용 값설명
--bind-addr없음호스트:포트로그인 명령 웹훅을 위해 바인딩할 호스트:포트 형식의 주소
--callback없음호스트:포트클러스터 로그인을 위해 브라우저를 열 때 표시되는 링크의 기본 URL (호스트:포트)을 재정의합니다. --bind-addr와 함께 사용해야 합니다.
-o, --out없음파일 경로인증서 출력 파일 경로
--formatfilefile, openssh 또는 kubernetes인증서 형식: 파일, openssh (OpenSSH 호환성) 또는 kubernetes (kubeconfig 용)
--browser없음nonetsh login 명령어에 대해 시스템 기본 브라우저를 열지 않기 위해 'none'으로 설정
--request-roles없음하나 이상의 추가 역할 요청
--request-reason없음추가 역할 요청의 이유
--request-nowait없음요청 해소를 기다리지 않고 끝냅니다.
--request-id없음주어진 요청에서 요청한 역할로 로그인
--no-use-local-ssh-agent로컬 ssh-agent에 생성된 SSH 인증서를 로드하지 않습니다 ($SSH_AUTH_SOCK로 지정됨). gpg-agent 또는 Yubikeys를 사용하는 경우 유용합니다. TELEPORT_USE_LOCAL_SSH_AGENT 환경 변수를 false로 설정할 수도 있습니다(기본값 true)

전역 플래그

이 플래그는 모든 명령에서 사용 가능합니다: --login, --proxy, --user, --ttl, --identity, --cert-format, --insecure, --auth, --skip-version-check, --debug, --jumphost. tsh help <subcommand>를 실행하거나 전역 플래그 섹션을 참조하세요.

예제

프록시 엔드포인트는 host:https_port[,ssh_proxy_port] 형식으로 https 및 ssh 포트를 사용할 수 있습니다.

https에 대해 443 및 3080 포트 모두 시도

tsh --proxy=proxy.example.com login

https 및 SSH 프록시의 포트 8080 및 8023 사용:

tsh --proxy=proxy.example.com:8080,8023 login

https에 대해 포트 8080 사용, SSH 프록시에 대한 기본 포트는 3023(기본값) 유지:

tsh --proxy=proxy.example.com:8080 login

기본 HTTPS 프록시 포트를 유지하고 사용자 지정 SSH 포트로 포트 23 사용

tsh --proxy=work.example.com:,23 login

클러스터 "two"에 로그인 및 선택:

tsh --proxy=proxy.example.com login two

기존 자격 증명을 사용하여 클러스터 "two" 선택 및 프록시:

tsh login two

매우 짧은 수명의 인증서로 클러스터에 로그인

tsh --ttl=1 login

로컬 Teleport 'admin' 사용자로 로그인:

tsh --proxy=proxy.example.com --auth=local --user=admin login

GitHub를 SSO 공급자로 사용하여 로그인 (GitHub 커넥터가 "github"라고 가정)

tsh --proxy=proxy.example.com --auth=github login

외부 공급자 로그인에 대해 시스템 기본 브라우저 열기 방지

tsh --proxy=proxy.example.com --browser=none

클러스터에 로그인하고 로컬 kubeconfig 출력

tsh login --proxy=proxy.example.com --format=kubernetes -o kubeconfig

클러스터 접근 요청

tsh login --proxy=proxy.example.com --request-reason="I need to run a debug script on production"

tsh 로그아웃

클라이언트의 클러스터 인증서를 삭제합니다:

tsh logout

tsh ls

클러스터 노드 목록:

tsh ls [<flags>] [<label>]

When Teleport의 인증 서비스가 Teleport 노드를 나열하라는 요청을 받으면 (예: 웹 UI에서 노드를 표시하거나 tsh ls를 통해), 현재 사용자가 볼 수 있는 권한이 있는 노드만 반환합니다.

사용자의 Teleport 클러스터에 있는 각 노드에 대해 인증 서비스는 다음 검사를 순서대로 적용하며, 하나의 검사가 실패하면 해당 노드를 사용자에게 숨깁니다:

  • 사용자의 역할 중 어느 것도 노드의 레이블과 일치하는 deny 규칙을 포함하지 않아야 합니다.
  • 사용자의 역할 중 적어도 하나는 노드의 레이블과 일치하는 allow 규칙을 포함해야 합니다.

예상할 때 노드를 볼 수 없다면, 사용자의 역할에 Teleport 접근 제어 참조에 문서화된 적절한 allowdeny 규칙이 포함되어 있는지 확인하세요.

인자

  • <labels> - 노드를 필터링하기 위한 key=value 레이블의 쉼표로 구분된 목록, 예: env=dev,host=foo.

플래그

이름기본 값허용 값설명
-v, --verbose없음없음노드 ID도 인쇄합니다.

전역 플래그

이 플래그는 모든 명령에서 사용 가능합니다: --login, --proxy, --user, --ttl, --identity, --cert-format, --insecure, --auth, --skip-version-check, --debug, --jumphost. tsh help <subcommand>를 실행하거나 전역 플래그 섹션을 참조하세요.

예제

tsh ls

노드 이름 주소 레이블

--------- ------------------ ------

grav-00 10.164.0.0:3022 os:linux

grav-01 10.156.0.2:3022 os:linux

grav-02 10.156.0.7:3022 os:osx


tsh ls -v

노드 이름 노드 ID 주소 레이블

--------- ------------------------------------ ------------------ ------

grav-00 52e3e46a-372f-494b-bdd9-a1d25b9d6dec 10.164.0.0:3022 os:linux

grav-01 73d86fc7-7c4b-42e3-9a5f-c46e177a29e8 10.156.0.2:3022 os:linux

grav-02 24503590-e8ae-4a0a-ad7a-dd1865c04e30 10.156.0.7:3022 os:osx


'osx' 레이블이 설정된 노드만 표시:

tsh ls os=osx

노드 이름 주소 레이블

--------- ------------------ ------

grav-02 10.156.0.7:3022 os:osx

tsh mfa 추가

새로운 다중 인증(MFA) 장치를 등록합니다:

tsh mfa add

예제

tsh mfa add

장치 유형 선택 [TOTP, WEBAUTHN]: webauthn

장치 이름 입력: desktop yubikey

등록된 보안 키를 탭하세요

새로운 보안 키를 탭하세요

MFA 장치 "desktop yubikey"가 추가되었습니다.

tsh mfa add

장치 유형 선택 [TOTP, WEBAUTHN]: totp

장치 이름 입력: android

등록된 보안 키를 탭하세요

TOTP 앱을 열고 다음 필드를 사용하여 새 수동 항목을 만듭니다:

이름: awly@example.com:3080

발급자: Teleport

알고리즘: SHA1

숫자 자릿수: 6

기간: 30s

비밀: 6DHDR7GWA7ZKLLWEWRIF55WXJKZ52UVJ


생성한 후, 앱에서 생성된 OTP 코드를 입력하세요: 123456

MFA 장치 "android"가 추가되었습니다.

tsh mfa ls

등록된 모든 다중 인증(MFA) 장치 목록:

tsh mfa ls

tsh mfa rm

등록된 다중 인증(MFA) 장치를 제거합니다. tsh mfa ls를 사용하여 등록된 장치를 볼 수 있습니다.

tsh mfa rm <device-name>

tsh play

이전 세션을 재생합니다:

tsh play [<flags>] <session-id>

인자

<session-id>

  • session-id 세션 내에서 teleport status를 통해 얻거나 웹 UI에서 얻은 이전 Teleport 세션의 UUID.

플래그

이름기본 값허용 값설명
--cluster없음클러스터 이름연결할 클러스터 지정
--formatptyjson, pty재생 형식

전역 플래그

이 플래그는 모든 명령에서 사용 가능합니다: --login, --proxy, --user, --ttl, --identity, --cert-format, --insecure, --auth, --skip-version-check, --debug, --jumphost, --format. tsh help <subcommand>를 실행하거나 전역 플래그 섹션을 참조하세요.

예제

tsh --proxy proxy.example.com play <session-id>

다운로드한 세션 기록을 사용하여 pty 형식으로 세션을 재생합니다.

tsh play --format=pty 1fe153d1-ce8b-4ef4-9908-6539457ba4ad.tar

이벤트 필터링을 위해 jq를 사용하여 json 형식의 세션을 재생합니다.

tsh play --format=json ~/play/0c0b81ed-91a9-4a2a-8d7c-7495891a6ca0.tar | jq '.event'

tsh proxy app

애플리케이션 서비스 연결을 위한 로컬 TLS 프록시를 시작합니다. 단일 로그인 후에 애플리케이션에 반복적으로 연결하는 데 이 프록시를 사용할 수 있으며, 특히 CLI를 통해 애플리케이션과 상호 작용하는 데 유용합니다.

tsh proxy app [<flags>] <app>

인수

<app>

  • app 로컬 프록시를 시작할 응용 프로그램의 이름입니다. 사용 가능한 응용 프로그램 목록을 보려면 tsh apps ls를 실행하세요.

플래그

이름기본값허용값설명
-p, --port없음포트 번호로컬 프록시의 소스 포트를 지정합니다.

전역 플래그

이 플래그는 모든 명령에서 사용할 수 있습니다. --login, --proxy, --user, --ttl, --identity, --cert-format, --insecure, --auth, --skip-version-check, --debug, --jumphost, --format.

<subcommand>에 대한 도움말을 보려면 tsh help <subcommand>를 실행하거나 전역 플래그 섹션을 참조하십시오.

예제

tsh proxy app <app>

로컬 포트 10700에서 grafana에 대한 연결 프록시

tsh proxy --port 10700 app grafana &

127.0.0.1:10700에서 grafana로의 연결을 프록시합니다.

curl http://127.0.0.1:10700/api/users

tsh proxy aws

AWS 액세스를 위한 로컬 프록시를 시작합니다. 사용자는 프록시를 시작하기 전에 Teleport를 통해 최소한 하나의 AWS 응용 프로그램에 이미 로그인해야 합니다.

tsh proxy aws [<flags>]

플래그

이름기본값허용값설명
--app현재 로그인한 AWS 앱문자열여러 개에 로그인한 경우 사용할 AWS 응용 프로그램의 선택적 이름 (즉, tsh apps ls에 표시됨)
-p, --port없음포트 번호로컬 프록시의 소스 포트를 지정합니다.
-e, --endpoint-urlHTTP 프록시엔드포인트 URL로컬 프록시가 Google Cloud 엔드포인트 URL로 작동하게 합니다. 지정하지 않으면 로컬 프록시는 HTTPS 프록시 역할을 합니다.
-f, --formatUNIXtext, unix, command-prompt, 또는 powershellAWS 프록시의 환경 변수를 인쇄하는 옵션 형식

전역 플래그

이 플래그는 모든 명령에서 사용할 수 있습니다. --login, --proxy, --user, --ttl, --identity, --cert-format, --insecure, --auth, --skip-version-check, --debug, --jumphost, --format.

<subcommand>에 대한 도움말을 보려면 tsh help <subcommand>를 실행하거나 전역 플래그 섹션을 참조하십시오.

예제

기본 설정으로 AWS에 대한 연결 프록시 설정

tsh apps login awsapp
tsh proxy aws

출력에서 env 변수를 설정합니다.

aws s3 ls

127.0.0.1:10700에서 awsapp2에 대한 연결을 프록시합니다.

tsh apps logins awsapp2
tsh proxy aws --port=10700 --app=awsapp2

출력에서 env 변수를 설정합니다.

aws s3 ls

tsh proxy azure

Azure 관리 서비스 ID 엔드포인트에 대한 안전한 액세스를 제공하는 로컬 프록시 서버를 시작합니다. 이는 사용자 지정 클라이언트 응용 프로그램에서 Azure에 대한 액세스를 관리하는 데 유용합니다. 로컬 프록시는 Teleport 애플리케이션 서비스로 트래픽을 전달하여 Azure에서 인증 토큰을 가져오는 데 Azure 관리 ID를 사용합니다.

tsh proxy azure [<flags>]

명령은 연결에 필요한 환경 변수를 위한 export 명령과 함께 로컬 프록시 서버의 주소를 출력합니다.

http://127.0.0.1:54321에서 Azure 프록시가 시작되었습니다.
포트 랜덤화를 피하려면 --port 플래그를 사용하여 리스닝 포트를 선택할 수 있습니다.

프록시에 연결하려면 다음 자격 증명 및 HTTPS 프록시 설정을 사용하세요:

  export AZURE_CONFIG_DIR=/Users/myuser/.tsh/azure/my.teleport.cluster/azure
  export HTTPS_PROXY=http://127.0.0.1:54321
  export HTTP_PROXY=http://127.0.0.1:54321
  export MSI_ENDPOINT=https://azure-msi.teleport.dev/123456789abcdef01234
  export REQUESTS_CA_BUNDLE=/Users/myuser/.tsh/keys/teleport.example.com/myuser-app/teleport.example.com/azure-cli-localca.pem

tsh proxy azure는 로컬 프록시를 전경에서 실행하므로 프로세스를 중단하거나 명령을 실행한 터미널을 종료하지 마십시오. 로컬 프록시를 종료할 준비가 된 경우에만 종료합니다.

export 명령을 복사하고 두 번째 터미널에 붙여넣으세요.

로컬 프록시 서버를 실행하려면 사용자의 역할 중 하나가 애플리케이션 서비스에서 사용하는 ID 중 하나로 spec.allow.azure_identities 필드를 포함해야 합니다. Teleport를 통해 Azure에 대한 안전한 액세스를 설정하는 방법은 Protect the Azure CLI with Teleport Application Access를 읽어보십시오.

인수

이 명령은 인수를 허용하지 않습니다.

플래그

이름기본값허용값설명
--app없음문자열Azure를 나타내는 Teleport 응용 프로그램의 이름(예: tsh apps ls 기반)입니다. 여러 Azure 응용 프로그램에 대한 액세스가 있는 경우 이 플래그를 사용하십시오.
--port없음포트 번호로컬 프록시가 연결을 수신할 localhost에서의 포트입니다.
--formatpowershell (Windows의 경우), unix (그렇지 않으면)text, unix, command-prompt, 또는 powershell로컬 프록시에 연결하기 위해 Azure 클라이언트 응용 프로그램의 환경 변수를 나열하는 데 사용할 형식입니다.

전역 플래그

이 플래그는 모든 명령에서 사용할 수 있습니다. --login, --proxy, --user, --ttl, --identity, --cert-format, --insecure, --auth, --skip-version-check, --debug, --jumphost, --format.

<subcommand>에 대한 도움말을 보려면 tsh help <subcommand>를 실행하거나 전역 플래그 섹션을 참조하십시오.

tsh proxy db

Teleport를 사용할 때 TLS 라우팅이 활성화된 데이터베이스 연결을 위해 로컬 TLS 프록시를 시작합니다. 클라이언트는 로컬 프록시를 통해 Teleport에 등록된 데이터베이스에 연결할 수 있습니다.

tsh proxy db [<flags>] <db>

플래그

이름기본값허용값설명
--cluster없음문자열연결할 Teleport 클러스터의 이름입니다.
--db-name아래 참조문자열로그인할 데이터베이스 이름입니다.
--db-user아래 참조문자열로그인할 데이터베이스 사용자입니다.
--port없음문자열로컬 프록시에서 사용할 소스 포트입니다.
--tunnel없음부울클라이언트가 인증을 받을 필요가 없도록 데이터베이스 클라이언트 인증서를 사용하여 인증된 터널을 엽니다.

데이터 입력: --db-user 또는 --db-name이 필요하면, 기본 설정은 이전에 tsh db login을 사용하여 얻은 활성 데이터베이스 인증서 또는 사용자의 허용된 db_users 또는 db_names에서 선택됩니다.

데이터베이스 사용자는 항상 필요합니다.

PostgreSQL, MongoDB 및 Oracle 데이터베이스의 경우 데이터베이스 이름이 필요합니다.

전역 플래그

이 플래그는 모든 명령에서 사용할 수 있습니다. --login, --proxy, --user, --ttl, --identity, --cert-format, --insecure, --auth, --skip-version-check, --debug, --jumphost, --format.

<subcommand>에 대한 도움말을 보려면 tsh help <subcommand>를 실행하거나 전역 플래그 섹션을 참조하십시오.

예제

DB에 대한 연결을 프록시합니다.

tsh proxy db <db>

mysql-db의 로컬 포트 10700에 대한 연결을 프록시합니다:

tsh proxy db --port 10700 mysql-db

127.0.0.1:10700에서 DB 프록시 시작됨


mysql-db 프록시에 연결하려면 다음과 같은 자격 증명을 사용하세요:

ca_file=/Users/jeff/.tsh/keys/teleport.example.com/cas/teleport.example.com.pem

cert_file=/Users/jeff/.tsh/keys/teleport.example.com/jeff-db/tele1c/mysql-db-x509.pem

key_file=/Users/jeff/.tsh/keys/teleport.example.com/jeff

자격 증명이 필요 없는 mysql-db에 대한 연결을 프록시합니다:

tsh proxy db --tunnel mysql-db
"mysql-db"라는 MySQL 데이터베이스의 인증된 터널을 Teleport 클러스터 "teleport.example.com"에서 127.0.0.1:49415에 대해 시작했습니다.
데이터베이스에 연결하려면 다음 명령을 사용하세요: $ mysql --port 49415 --host localhost --protocol TCP

tsh proxy gcloud

Google Cloud API 액세스를 위한 로컬 프록시를 시작합니다. 사용자는 프록시를 시작하기 전에 Teleport를 통해 최소한 하나의 Google Cloud 응용 프로그램에 이미 로그인해야 합니다.

tsh proxy gcloud [<flags>]

플래그

이름기본값허용값설명
--app현재 로그인한 Google Cloud 앱문자열여러 개에 로그인한 경우 사용할 Google Cloud 응용 프로그램의 선택적 이름 (즉, tsh apps ls에 표시됨)
-p, --port없음포트 번호로컬 프록시의 소스 포트를 지정합니다.
-e, --endpoint-urlHTTP 프록시엔드포인트 URL로컬 프록시가 Google Cloud 엔드포인트 URL로 작동하게 합니다. 지정하지 않으면 로컬 프록시는 HTTPS 프록시 역할을 합니다.
-f, --formatUNIXtext, unix, command-prompt, 또는 powershellGoogle Cloud 프록시의 환경 변수를 인쇄하는 옵션 형식

전역 플래그

이 플래그는 모든 명령에서 사용할 수 있습니다. --login, --proxy, --user, --ttl, --identity, --cert-format, --insecure, --auth, --skip-version-check, --debug, --jumphost, --format.

<subcommand>에 대한 도움말을 보려면 tsh help <subcommand>를 실행하거나 전역 플래그 섹션을 참조하십시오.

예제

tsh apps login google-cloud-app
tsh proxy gcloud

출력에서 env 변수를 설정합니다.

gcloud compute instances list
gsutil ls

tsh proxy ssh

Teleport를 TLS 라우팅 모드로 사용할 시 ssh 연결을 위한 로컬 TLS 프록시를 시작합니다. 이는 일반적으로 ssh를 클라이언트로 사용할 수 있도록 SSH클라이언트 구성을 위한 일부로 사용됩니다. OpenSSH 가이드에서는 OpenSSH 서버와 클라이언트를 구성하는 방법을 안내합니다. tsh config 출력에는 ProxyCommand 지시문 내에서 tsh proxy ssh가 포함됩니다.

tsh proxy ssh [<flags>] <[user@]host>

인수

  • <[user@]host> 원격 호스트 및 사용할 로그인을 지정합니다.

플래그

이름기본값허용값설명
--cluster없음Teleport 클러스터연결할 Teleport 클러스터의 이름입니다.

전역 플래그

이 플래그는 모든 명령에서 사용할 수 있습니다. --login, --proxy, --user, --ttl, --identity, --cert-format, --insecure, --auth, --skip-version-check, --debug, --jumphost.

<subcommand>에 대한 도움말을 보려면 tsh help <subcommand>를 실행하거나 전역 플래그 섹션을 참조하십시오.

예제

다음 명령을 실행하여 OpenSSH 클라이언트 구성을 생성합니다:

tsh config

이 명령은 다음과 같은 구성을 생성합니다:

# example.com 호스트에 대한 공통 플래그
Host *.example.com example.com
    UserKnownHostsFile "/Users/jeff/.tsh/known_hosts"
    IdentityFile "/Users/jeff/.tsh/keys/enterprise.teleportdemo.com/jeff"
    CertificateFile "/Users/jeff/.tsh/keys/example.com/jeff-ssh/example.com-cert.pub"
    PubkeyAcceptedKeyTypes +ssh-rsa-cert-v01@openssh.com
    HostKeyAlgorithms ssh-rsa-cert-v01@openssh.com

# proxy를 제외한 모든 example.com 호스트에 대한 플래그
Host *.example.com !example.com
    Port 3022
    ProxyCommand "/usr/local/bin/tsh" proxy ssh --cluster=example.com --proxy=example.com %r@%h:%p

이 출력은 환경의 기본 SSH 구성인 ~/.ssh/config (Mac/Linux의 경우) 또는 Windows 사용자 홈 디렉토리의 .ssh\config에 배치되어야 합니다. 이것을 standalone SSH 구성 파일로도 사용할 수 있습니다.

프록시 서비스의 도메인 하위 도메인에 대한 호스트에서 ssh 명령을 실행할 때 이 SSH 구성은 ProxyCommand를 사용하여 tsh proxy ssh를 실행합니다:

ssh myuser@node1.example.com

tsh puttyconfig

현재 로그인된 Windows 사용자를 위해 Windows 레지스트리에 PuTTY 저장된 세션을 추가합니다.

$ tsh puttyconfig [--leaf <leaf-cluster-name>] [login@]hostname

플래그

이름기본값허용값설명
-l, --login없음Linux 사용자이름사용할 기본 Linux 사용자이름입니다. SSH 구성의 User 옵션으로 변환됩니다.
-p, --port3022포트사용할 기본 SSH 포트입니다. SSH 구성의 Port 옵션으로 변환됩니다.
--leaf없음리프 클러스터 이름저장된 세션에 추가할 리프 클러스터 이름입니다.

예제

'node'에 대해 사용자 'ec2-user'의 저장된 PuTTY 세션 추가

tsh puttyconfig ec2-user@node

사용자 'ubuntu'의 Teleport 등록 OpenSSH 노드를 위한 저장된 PuTTY 세션 추가

tsh puttyconfig --port 22 ubuntu@openssh

'example.teleport.sh'의 리프 클러스터 'leaf-node'에서 사용자 'ec2-user'의 저장된 PuTTY 세션 추가

tsh puttyconfig --leaf example.teleport.sh ec2-user@leaf-node

여기에 대한 tsh puttyconfig의 전체 문서 보기.

tsh recordings ls

기록된 세션의 목록을 나열합니다.

tsh recordings ls [<flags>]

플래그

이름기본값허용값설명
--from-utc24시간 전날짜기록된 세션이 나열되는 시간 범위의 시작입니다. 형식 2006-01-02. 기본값은 24시간 전입니다.
--to-utc현재날짜기록된 세션이 나열되는 시간 범위의 시작입니다. 형식 2006-01-02. 기본값은 현재입니다.
--limit50숫자표시할 최대 기록 수입니다.
--last없음기간기록된 세션이 나열될 과거의 기간입니다. 형식 5h30m40s

전역 플래그

이 플래그는 모든 명령에서 사용할 수 있습니다. --login, --proxy, --user, --ttl, --identity, --cert-format, --insecure, --auth, --skip-version-check, --debug, --jumphost.

<subcommand>에 대한 도움말을 보려면 tsh help <subcommand>를 실행하거나 전역 플래그 섹션을 참조하십시오.

예제

지난 24시간의 기록된 세션 가져오기

tsh --proxy proxy.example.com recordings ls
ID Type Participants Hostname Timestamp------------------------------------ ---- ------------ -------- -------------------b0a04442-70dc-4be8-9308-7b7901d2d600 ssh jeff dev Nov 26 16:36:16 UTCc0a02222-70dc-4be8-9308-7b7901d2d600 kube alice Nov 26 20:36:16 UTCd0a04442-70dc-4be8-9308-7b7901d2d600 ssh navin test Nov 26 16:36:16 UTC

tsh play를 통해 세션을 재생할 수 있습니다.

tsh play c0a02222-70dc-4be8-9308-7b7901d2d60

2022년 11월 1일과 2022년 11월 3일 사이에 발생한 기록된 세션 나열

tsh recordings ls --from-utc=2022-11-01 --to-utc=2022-11-3

지난 6시간 동안의 기록된 세션 가져오기

tsh recordings ls --last=6h0m0s
기록된 세션 가용성

기록된 세션은 감사 이벤트에서 세션 녹화 파일의 스토리지 백엔드와 연결됩니다. 세션 녹화 파일이 사용 불가능하거나 기록된 세션에 대해 디렉터리 스토리지 백엔드를 사용하는 경우 다음 오류가 발생할 수 있습니다. 감사 로그 및 기록된 세션의 디렉터리 스토리지 백엔드를 사용할 때, 해당 기록된 세션에 해당하는 인증 서버만 파일을 검색할 수 있습니다.

tsh play c8e1b2c5-322a-4095-89e3-391edfd2da9b
ERROR: 세션 c8e1b2c5-322a-4095-89e3-391edfd2da9b의 녹화가 발견되지 않았습니다.

감사 로그를 결합하는 보안 정보 및 이벤트 관리(SIEM) 서비스를 활용하면 사용 가능한 녹화 목록을 통합하는 데 도움이 됩니다.

다운로드된 기록 세션은 파일로 직접 재생할 수 있습니다.

tsh play c8e1b2c5-322a-4095-89e3-391edfd2da9b.tar

tsh request create

새로운 액세스 요청을 생성합니다.

tsh request create [<flags>]

플래그

이름기본값허용값설명
--roles없음쉼표로 구분된 문자열요청할 Teleport 역할 목록입니다.
--resource없음문자열요청할 리소스 ID입니다(여러 리소스를 요청하려면 플래그를 반복할 수 있습니다).
--reason없음문자열요청 사유(선택 사항).
--reviewers없음쉼표로 구분된 문자열요청에 대한 제안된 검토자(선택 사항).
--nowaitfalsetrue 또는 false요청 해답을 기다리지 않고 완료합니다.
--request-ttl1시간상대 기간 (예: 5s, 2m, 또는 3h)액세스 요청이 PENDING 상태에 있는 최대 기간을 정의합니다.
--session-ttl현재 세션의 남은 시간상대 기간 (예: 5s, 2m, 또는 3h)상승된 세션이 유효할 최대 기간을 정의합니다.
--max-duration없음상대 기간 (예: 5s, 2m, 3h, 또는 7d)최대 세션 기간을 정의합니다. 최대 7일까지 가능합니다. 할당된 역할은 max_duration 옵션도 지정해야 합니다(선택 사항).
--assume-start-time없음문자열요청자가 역할을 가정할 수 있는 시간을 설정합니다 (RFC3339).
참고

--request-ttl--session-ttl 값은 다음보다 클 수 없습니다:

  • 최대 인증서 수명.
  • 기존 세션의 남은 시간 (인증서).
  • 사용자의 역할에 의해 정의된 최대 세션 지속시간.

--max-duration을 사용하여 최대 인증서 수명보다 긴 액세스를 요청할 수 있습니다.

tsh request drop

현재 사용자 ID에서 하나 이상의 액세스 요청을 삭제합니다.

tsh request drop [<request-id>...]

인수

  • <request-id> - 현재 사용자로부터 "드롭"할 요청의 ID입니다. 이러한 요청으로 인해 사용자의 인증서가 상승된 역할 및/또는 리소스 제한을 잃게 됩니다. 요청 ID가 없으면 기본적으로 모든 액세스 요청이 삭제됩니다.

tsh request ls

액세스 요청의 목록을 나열합니다.

tsh request ls

플래그

이름기본값허용값설명
--formattexttext, json, 또는 yaml출력 형식
--reviewablefalsetrue 또는 false현재 사용자에 의해 검토 가능한 요청만 표시합니다.
--suggestedfalsetrue 또는 false현재 사용자를 검토자로 제안하는 요청만 표시합니다.
--my-requestsfalsetrue 또는 false현재 사용자가 생성한 요청만 표시합니다.

tsh request review

액세스 요청을 검토합니다.

tsh request review [<flags>] <request-id>

플래그

이름기본값허용값설명
--approvefalsetrue 또는 false검토에서 승인 제안을 합니다.
--denyfalsetrue 또는 false검토에서 거부 제안을 합니다.
--reason없음문자열검토 사유 메시지입니다.
--assume-start-time없음문자열요청자가 역할을 가정할 수 있는 시간을 설정합니다 (RFC3339).

인수

  • <request-id> - 대상 요청의 ID입니다.

액세스를 요청할 리소스를 검색합니다.

tsh request search [<flags>]

플래그

이름기본값허용값설명
--kind없음node, kubernetes_cluster, db, app, windows_desktop검색할 리소스 종류(필수).
--search없음쉼표로 구분된 문자열따옴표로 묶인 검색 키워드 또는 구문 목록입니다.
--query없음문자열Predicate 언어로 쿼리합니다.
--labels없음쉼표로 구분된 문자열레이블로 필터링하기 위한 레이블 목록입니다 (예: key=value1,key2=value2).

tsh request show

액세스 요청의 세부정보를 표시합니다.

tsh request show <request-id>

플래그

이름기본값허용값설명
--formattexttext, json, 또는 yaml출력 형식

인수

  • <request-id> - 대상 요청의 ID입니다.

tsh scp

소스에서 대상으로 파일을 복사합니다:

tsh scp [<flags>] <source>... <dest>

인수

  • <source> - 복사할 파일 경로입니다.
  • <dest> - 대상 위치입니다.

플래그

이름기본값허용값설명
--cluster없음클러스터 이름연결할 클러스터를 지정합니다.
-r, --recursive없음없음하위 디렉터리를 재귀적으로 복사합니다.
-P, --port없음포트 번호원격 호스트에서 연결할 포트입니다.
-q, --quiet없음없음조용한 모드입니다.

전역 플래그

이 플래그는 모든 명령에서 사용할 수 있습니다. --login, --proxy, --user, --ttl, --identity, --cert-format, --insecure, --auth, --skip-version-check, --debug, --jumphost.

<subcommand>에 대한 도움말을 보려면 tsh help <subcommand>를 실행하거나 전역 플래그 섹션을 참조하십시오.

예제

tsh --proxy=proxy.example.com scp example.txt user@host:/destination/dir
Note

tsh scp는 사용자가 세션 중재를 요구하거나 승인 없이 연결 중에 이 명령을 실행하면 CLI에서 작동하지 않습니다. 중재 세션에서 파일 전송을 할 수 있으며, 이 경우 SSH 세션을 웹 UI에서 참여해야 하고 파일 전송 요청을 그곳에서 요청해야 합니다. 세션 시작자와 중재자는 파일 전송 요청이 승인될 수 있도록 웹 UI 내에서 모두 응답해야 합니다.

tsh ssh

원격 SSH 노드에서 셸을 실행하거나 명령을 실행합니다:

tsh ssh [<flags>] <[user@]host> [<command>...]

인수

<[user@]host> [<command>...]

  • user 원격 호스트에서 사용할 로그인 ID입니다. [user]가 지정되지 않으면 기본적으로 사용자가 $USER로 설정되거나 --user로 설정할 수 있습니다. --user와 위치 인수 [user]가 모두 지정된 경우, [user]가 우선합니다.
  • host 클러스터 노드의 nodename 또는 모든 일치하는 호스트에서 실행할 레이블 사양입니다.
  • command 원격 호스트에서 실행할 명령입니다.

플래그

이름기본값허용값설명
-p, --port없음포트원격 호스트에서의 SSH 포트입니다.
-A, --forward-agent없음없음ssh -A와 같이 대상 노드에 에이전트를 포워딩합니다.
-L, --forward없음없음로컬호스트 연결을 원격 서버로 전달합니다.
-D, --dynamic-forward없음없음로컬호스트 연결을 원격 서버로 SOCKS5를 통해 전달합니다.
-R, --remote-forward없음없음원격 연결을 로컬호스트로 전달합니다.
-N, -no-remote-exec없음없음원격 명령을 실행하지 않으면, 포트 포워딩에 유용합니다.
--local없음SSH 노드에 연결하고 나서 로컬호스트에서 명령을 실행합니다.
-t, --ttyfileTTY를 할당합니다.
--cluster없음연결할 클러스터를 지정합니다.
-o, --optionlocal구성 파일에서 사용되는 형식을 OpenSSH 옵션으로 지정합니다.
--enable-escape-sequencesSSH 이스케이프 시퀀스에 대한 지원을 활성화합니다. SSH 세션 중에 ~?를 입력하여 지원되는 시퀀스를 나열합니다.
--no-use-local-ssh-agent생성된 SSH 인증서를 로컬 ssh-agent(지정된 $SSH_AUTH_SOCK)에 추가하지 않습니다. gpg-agent 또는 Yubikeys를 사용할 때 유용합니다. TELEPORT_USE_LOCAL_SSH_AGENT 환경 변수를 false로 설정할 수 있습니다(기본값 true).
-X, --x11-untrusted없음없음이 세션에 대한 신뢰할 수 없는(안전한) X11 포워딩을 요청합니다.
-Y, --x11-trusted없음없음이 세션에 대한 신뢰할 수 있는(위험한) X11 포워딩을 요청합니다. (이 경우 로컬 머신이 공격에 취약해질 수 있으므로 주의해서 사용하십시오.)
--x11-untrusted-timeout10m기간신뢰할 수 없는 X11 포워딩에 대한 제한 시간을 설정합니다. 만료 후 클라이언트는 서버로부터 모든 포워딩 요청을 거부합니다.

전역 플래그

이 플래그는 모든 명령에서 사용할 수 있습니다. --login, --proxy, --user, --ttl, --identity, --cert-format, --insecure, --auth, --skip-version-check, --debug, --jumphost.

<subcommand>에 대한 도움말을 보려면 tsh help <subcommand>를 실행하거나 전역 플래그 섹션을 참조하십시오.

예제

노드 `grav-00`에 OS 사용자 `root`로 로그인

tsh ssh --proxy proxy.example.com --user teleport -d root@grav-00

`tsh ssh`는 OpenSSH 클라이언트와 동일한 인수를 사용합니다.

tsh ssh -o ForwardAgent=yes root@grav-00
tsh ssh -o AddKeysToAgent=yes root@grav-00

`env=aws` 레이블이 있는 모든 노드에서 `hostname`을 실행합니다.

tsh ssh root@env=aws hostname

tsh status

프록시 서버 목록 및 검색된 인증서를 표시합니다.

tsh status

예제

tsh status

> 프로필 URL: https://proxy.example.com:3080

로그인한 사용자: benarent

클러스터: aws

역할: access, editor, auditor

로그인: benarent, root, ec2-user, ubunutu

Kubernetes: 활성화됨

Kubernetes 클러스터: "gke_bens-demos_us-central1-c_gks-demo"

Kubernetes 그룹: system:masters

유효기간: 2020-11-21 01:50:23 -0800 PST [유효기간 11시간52분0초]

확장: permit-agent-forwarding, permit-port-forwarding, permit-pty

tsh version

현재 tsh 바이너리 및 현재 tsh 프로필의 Teleport Proxy Service 버전을 출력합니다.

tsh version [<flags>]
이름기본값허용값설명
-f, --formattexttext, json, yaml형식 출력
--client없음없음서버 없이 클라이언트 버전만 표시합니다.

예제

tsh version
Teleport v16.2.0 git: go1.22프록시 버전: 16.2.0프록시: teleport.example.com:443

JSON 형식으로 표시:

tsh version --format=json
{
  "version": "16.2.0",
  "gitref": "",
  "runtime": "go1.22",
  "proxyVersion": "16.2.0",
  "proxyPublicAddress": "teleport.example.com:443"
}

tsh 바이너리 버전만 표시합니다:

tsh version --client
Teleport v16.2.0 git: go1.22
Teleport 원문 보기