Infograb logo
tsh CLI 참조

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

tsh 환경 변수

환경 변수는 tsh 클라이언트를 구성하며, 반복적으로 플래그를 사용하는 것을 피하는 데 도움을 줄 수 있습니다.

환경 변수설명예시 값
TELEPORT_AUTH정의된 모든 인증 커넥터, passwordlesslocal (즉, 인증 커넥터 없음)을 포함okta
TELEPORT_MFA_MODEMFA 및 Passwordless 주장을 위한 기본 모드otp
TELEPORT_CLUSTERTeleport 루트 또는 리프 클러스터의 이름cluster.example.com
TELEPORT_LOGIN원격 호스트에서 기본적으로 사용할 로그인 이름root
TELEPORT_LOGIN_BIND_ADDR로그인 명령 webhook에 바인딩될 호스트:포트 형태의 주소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_FILE인증서 파일 경로/opt/identity

tsh 전역 플래그

이름기본 값허용 값설명
-l, --login없음신원 이름Teleport 사용자가 사용할 로그인 신원
--proxy없음host:https_port[,ssh_proxy_port]Teleport 프록시 서비스 주소
--user$USER없음Teleport 사용자 이름
--ttl720 (12시간)정수tsh 사용자를 위해 발급된 인증서가 유효한 분 수
-i, --identity없음string 파일 경로인증서 파일
--cert-formatstandardstandard 또는 oldsshSSH 인증서 형식. oldssh 는 사용자 역할이 SSH 인증서에 인코딩되는 방법을 허용하지 않는 이전 버전의 OpenSSH 서버를 지원합니다.
--insecure없음없음서버의 인증서 및 호스트 이름을 확인하지 않습니다. 테스트 환경에서만 사용하십시오.
--authlocal정의된 모든 인증 커넥터, passwordlesslocal (즉, 인증 커넥터 없음)을 포함사용할 인증 커넥터의 유형을 지정합니다.
--mfa-modeautoauto , cross-platform , platform 또는 otpMFA 및 Passwordless 주장을 위한 선호 모드.
--skip-version-check없음없음서버와 클라이언트 간의 버전 확인을 건너뜁니다.
-d, --debug없음없음stdout에 상세 로깅
-J, --jumphost없음점프 호스트SSH 점프 호스트
--headless없음없음인증을 위해 헤드리스 WebAuthn을 사용합니다.
--mlockautoauto , off , best_effort , strict프로세스 메모리를 잠가 클라이언트 비밀이 메모리에 저장되는 것을 보호합니다.

tsh apps ls

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

tsh apps ls

tsh clusters

tsh clusters [<flags>]

플래그

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

글로벌 플래그

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

예시

tsh clusters

클러스터 이름 상태

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

staging online

production offline


tsh clusters --quiet

staging online

production offline

tsh config

SSH 클라이언트를 사용하여 Teleport가 관리하는 자격 증명으로 클러스터의 호스트에 연결할 수 있도록 OpenSSH 구성 세부정보를 출력합니다.

tsh config

플래그

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

예시

OpenSSH 구성 파일을 콘솔에 출력

tsh config

Teleport 구성을 ssh 구성에 추가

tsh config >> ~/.ssh/config

tsh device enroll

현재 장치를 신뢰할 수 있는 장치로 등록합니다.

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

tsh device enroll --token=TOKEN

플래그

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

예시

tsh device enroll --token=AAAAAAAAAAAAAAAAAAAAAAAA-this-is-an-example
장치 "C00AA0AAAA0A"/macOS 등록되었습니다.

tsh gcloud

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

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

인수

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

플래그

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

글로벌 플래그

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

예시

tsh gcloud compute instances list

tsh gsutil

Proxy gsutil CLI 명령을 Teleport 애플리케이션 서비스 통해 실행합니다. gsutil 은 Google Cloud Storage와 상호작용하기 위한 도구입니다. 사용자가 tsh gsutil 명령을 실행하기 전에 이미 Teleport에서 Google Cloud 애플리케이션에 인증되어 있어야 합니다.

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

인수

command : 실행할 gsutil 명령, 인수 및 플래그 포함.

플래그

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

전역 플래그

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

예시

tsh gsutil ls

tsh help

도움을 출력합니다:

tsh help

tsh join

활성 세션에 조인합니다:

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

인수

<session-id>

  • session-id teleport status 를 통해 세션에서 얻은 활성 Teleport 세션의 UUID.

플래그

이름기본값허용 값설명
--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 login

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를 생성합니다.
--asnonestring현재 Teleport 사용자가 지정된 Kubernetes 클러스터에 인증할 때 로그인할 Kubernetes 사용자입니다.

이것은 Kubernetes 사용자인수를 사용하므로, Teleport 사용자의 Kubernetes 사용자는 대상 사용자를 가장할 수 있는 권한을 가져야 합니다.
--as-groupsnonestring현재 Teleport 사용자가 지정된 Kubernetes 클러스터에 인증할 때 로그인할 Kubernetes 그룹입니다.

이것은 Kubernetes 사용자인수를 사용하므로, Teleport 사용자의 Kubernetes 사용자는 대상 그룹을 가장할 수 있는 권한을 가져야 합니다.

이 플래그는 여러 번 포함하여 여러 Kubernetes 그룹을 가장할 수 있습니다.
--clusternonestring지정된 Kubernetes 클러스터에 연결하기 위해 로그인할 Teleport 클러스터의 이름입니다.
-n , --kube-namespacenonestring사용자가 로그인하는 클러스터 내에서 기본값으로 구성할 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-addrnonehost:port로그인 명령 웹훅을 위해 바인딩할 호스트:포트 형식의 주소입니다.
--callbacknonehost:port클러스터 로그인을 위해 브라우저를 열 때 보여지는 링크의 기본 URL(호스트:포트)을 재정의합니다. --bind-addr와 함께 사용해야 합니다.
-o, --outnonefilepath신원 출력 파일 경로입니다.
--formatfilefile , openssh 또는 kubernetes신원 형식: file, openssh (OpenSSH 호환성 용) 또는 kubernetes (kubeconfig 용)
--browsernonenonetsh login 명령어로 시스템 기본 브라우저를 여는 것을 억제하려면 'none'으로 설정합니다.
--request-rolesnone하나 이상의 추가 역할을 요청합니다.
--request-reasonnone추가 역할 요청 사유입니다.
--request-nowaitnone요청 해결을 기다리지 않고 종료합니다.
--request-idnone주어진 요청에서 요청한 역할로 로그인합니다.
--no-use-local-ssh-agent$SSH_AUTH_SOCK 로 지정된 로컬 ssh-agent에 생성된 SSH 인증서를 로드하지 않습니다. gpg-agent 또는 Yubikey를 사용할 때 유용합니다. TELEPORT_USE_LOCAL_SSH_AGENT 환경 변수를 false 로 설정할 수도 있습니다 (기본값 true ).

전역 플래그

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

예제

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

https에 대해 포트 443과 3080을 모두 시도합니다

tsh --proxy=proxy.example.com login

https 및 SSH 프록시에 대해 포트 8080 및 8023을 사용합니다:

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

SSH 프록시에 대해 포트 8080 및 3023(기본값)을 사용합니다:

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

커스텀 SSH 포트로 포트 23을 사용하고, HTTPS 프록시 포트는 기본값으로 유지합니다

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 커넥터가 "github"라고 가정할 때, SSO 공급자로 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="나는 프로덕션에서 디버그 스크립트를 실행해야 합니다"

tsh logout

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

tsh logout

tsh ls

클러스터 노드 목록:

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

Teleport의 Auth 서비스가 Teleport 노드를 목록화하라는 요청을 받을 때(예: 웹 UI에서 노드를 표시하거나 tsh ls 를 통해), 현재 사용자가 볼 수 있는 노드만 반환합니다.

사용자의 Teleport 클러스터의 각 노드에 대해 Auth 서비스는 다음과 같은 검사를 순서대로 적용하며, 하나의 검사가 실패할 경우 해당 노드를 사용자에게 숨깁니다:

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

예상치 못하게 노드가 보이지 않는 경우, 사용자의 역할에 적절한 allowdeny 규칙이 포함되어 있는지 확인하십시오. 이는 Teleport Access Controls Reference에서 문서화되어 있습니다.

인수

  • <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 <서브커맨드>를 실행하거나 전역 플래그 섹션을 참조하십시오.

예제

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


os 레이블이 '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 목록

등록된 모든 다단계 인증(MFA) 장치를 나열합니다:

tsh mfa ls

tsh mfa 제거

등록된 다단계 인증(MFA) 장치를 제거합니다. 등록된 장치를 보려면 tsh mfa ls 를 사용하세요.

tsh mfa rm <device-name>

tsh 재생

이전 세션을 재생합니다:

tsh play [<flags>] <id-or-file>

인수

<id-or-file>

  • id-or-file 과거 Teleport 세션의 UUID 또는 로컬 녹화 파일의 경로입니다.

플래그

이름기본값허용값설명
--cluster없음cluster_name연결할 클러스터를 지정합니다
--formatptyjson , yaml , pty , text재생 형식
--speed1x0.5x , 1x , 2x , 4x , 8x재생 속도
--skip-idle-timefalsetrue , false재생 중 유휴 시간을 건너뜁니다

전역 플래그

이 플래그는 모든 명령에서 사용할 수 있습니다: --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>

서버에서 스트리밍 된 세션을 재생 중입니다.

tsh play 1fe153d1-ce8b-4ef4-9908-6539457ba4ad

jq를 사용하여 이벤트를 필터링 한 JSON 형식으로 로컬 세션을 재생 중입니다.

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

유휴 시간을 건너 뛰면서 2배 속도로 세션을 재생합니다.

tsh play --speed=2x --skip-idle-time 1fe153d1-ce8b-4ef4-9908-6539457ba4ad

타이밍 데이터를 존중하지 않고 표준 출력으로 SSH 세션 기록을 덤프합니다.

tsh play --format=text 1fe153d1-ce8b-4ef4-9908-6539457ba4ad

tsh proxy app

애플리케이션 서비스 연결을 위한 로컬 TLS 프록시를 시작합니다.
이 프록시는 Teleport 클러스터에 한 번의 로그인 후 애플리케이션에 반복적으로 연결하는 데 사용할 수 있으며, 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 .
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 프록시엔드포인트 URLAWS 엔드포인트 URL 역할을 하는 로컬 프록시를 실행합니다. 지정하지 않으면 로컬 프록시는 HTTPS 프록시로 작동합니다.
-f , --formatunixtext , unix , command-prompt , 또는 powershellAWS 프록시의 환경 변수를 출력하기 위한 선택적 형식

전역 플래그

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

예제

기본 설정으로 AWS에 대한 연결을 프록시합니다.

tsh apps login awsapp
tsh proxy aws

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

aws s3 ls

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

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

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

aws s3 ls

tsh 프록시 azure

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

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 명령을 복사하여 두 번째 터미널에 붙여넣습니다.

로컬 프록시 서버를 실행하려면 사용자의 역할 중 하나에 애플리케이션 서비스에서 사용하는 정체성 중 하나를 포함하는 spec.allow.azure_identities 필드가 있어야 합니다. Teleport를 통해 Azure에 대한 보안 액세스를 설정하는 방법을 알아보려면 Teleport 애플리케이션 액세스에 따라 Azure CLI 보호를 읽어보십시오.

인수

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

플래그

이름기본값허용 값설명
--app없음문자열Azure를 나타내는 Teleport 애플리케이션의 이름(즉, tsh apps ls 를 기반으로). 여러 Azure 애플리케이션에 액세스할 수 있는 Teleport 사용자의 경우 이 플래그를 사용하십시오.
--port없음포트 번호로컬 프록시가 연결을 수신 대기할 localhost 의 포트입니다.
--formatWindows의 경우 powershell , 그 외의 경우 unixtext , unix , command-prompt 또는 powershell로컬 프록시에 연결하는 Azure 클라이언트 애플리케이션의 환경 변수 목록 형식을 지정합니다.

전역 플래그

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

tsh 프록시 db

TLS 라우팅이 활성화된 Teleport를 사용할 때 데이터베이스 연결을 위한 로컬 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 .
tsh help <subcommand> 를 실행하거나 글로벌 플래그 섹션을 참조하십시오.

예시

이름이 지정된 데이터베이스에 DB 연결 프록시 설정

tsh proxy db <db>

로컬 포트 10700에서 mysql db에 연결 프록시 설정:

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" 데이터베이스에 대한 인증된 터널이 "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 앱string여러 개에 로그인한 경우 사용할 Google Cloud 애플리케이션의 선택적 이름 (tsh apps ls 에서 표시됨)
-p , --port없음포트 번호로컬 프록시의 소스 포트를 지정합니다
-e , --endpoint-urlHTTP 프록시엔드포인트 URLGoogle 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 .
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 프록시를 시작합니다.
이것은 일반적으로 Teleport를 통해 클라이언트로 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, --format . 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

# 프록시를 제외한 모든 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/config (Mac/Linux) 또는 Windows 사용자 홈 디렉터리의 .ssh\config 에 기본 SSH 구성으로 배치되어야 합니다. 이것은 독립형 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없음리눅스 사용자 이름사용할 기본 리눅스 사용자 이름입니다. SSH 구성의 User 옵션으로 변환됩니다.
-p, --port3022포트사용할 기본 SSH 포트입니다. SSH 구성의 Port 옵션으로 변환됩니다.
--leaf없음리프 클러스터 이름저장된 세션에 추가할 리프 클러스터 이름입니다.

예제

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

tsh puttyconfig ec2-user@node

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

tsh puttyconfig --port 22 ubuntu@openssh

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

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

tsh puttyconfig 에 대한 전체 문서를 참조하십시오.

tsh recordings ls

기록된 세션 목록입니다.

tsh recordings ls [<flags>]

Flags

NameDefault Value(s)Allowed Value(s)Description
--from-utc24 시간 전date기록이 나열되는 시간 범위의 시작. 형식 2006-01-02. 기본값은 24 시간 전입니다.
--to-utc현재date기록이 나열되는 시간 범위의 끝. 형식 2006-01-02. 기본값은 24 시간 전입니다.
--limit50number표시할 최대 기록 수.
--last없음duration세션 기록이 나열될 과거의 기간. 형식 5h30m40s

Global flags

이 플래그는 모든 명령에 사용할 수 있습니다: --login, --proxy, --user, --ttl, --identity, --cert-format, --insecure, --auth, --skip-version-check, --debug, --jumphost, --format .
tsh help <subcommand>를 실행하거나 Global Flags section를 참조하십시오.

예시

지난 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일부터 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

현재 아이덴티티에서 하나 이상의 액세스 요청을 제거합니다.

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 요청 검색

액세스 요청을 위한 리소스를 검색합니다.

tsh request search [<flags>]

플래그

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

tsh 요청 표시

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

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 .
tsh help <subcommand>를 실행하거나 전역 플래그 섹션을 참조하세요.

예시

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

tsh scp 는 사용자가 세션 조정을 요구할 경우 CLI에서 작동하지 않습니다. 웹 UI에서 SSH 세션에 참여하고 거기서 파일 전송 요청을 요청하여 조정된 세션에서 파일을 전송할 수 있습니다. 세션 시작자와 조정자는 파일 전송 요청을 승인하기 위해 웹 UI에 모두 있어야 합니다.

tsh ssh

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

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

인수

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

  • user 원격 호스트에서 사용할 로그인 신원. [user]가 지정되지 않은 경우 사용자는 $USER 로 기본 설정되거나 --user 로 설정할 수 있습니다. --user 플래그와 위치 인수 [user]가 지정된 경우, 인수 [user]가 우선합니다.
  • host 클러스터 노드의 nodename 또는 env=aws 와 같이 모든 일치하는 호스트에서 실행할 레이블 사양.
  • 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 .
tsh help <하위 명령>을 실행하거나 전역 플래그 섹션을 확인하십시오.

예제

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

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 상태

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

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 버전

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

tsh version [<flags>]
이름기본값허용값설명
-f, --formattexttext, json, yaml버전 출력 형식
--client없음없음클라이언트 버전만 표시 (서버는 필요하지 않음).

예제

tsh version
Teleport v17.0.0-dev git: go1.22Proxy version: 17.0.0-devProxy: teleport.example.com:443

JSON 형식으로 표시:

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

tsh 바이너리 버전만 표시:

tsh version --client
Teleport v17.0.0-dev git: go1.22
Teleport 원문 보기