InfoGrab DocsInfoGrab Docs

Teleport와 PuTTY 및 WinSCP 사용

요약

이 가이드는 Teleport 클라이언트 도구 tsh를 사용하여 PuTTY와 함께 사용할 저장된 세션을 추가하는 방법과 PuTTY를 클라이언트로 사용하여 SSH 노드에 연결하는 방법을 보여줍니다. 또한 이러한 저장된 세션을 WinSCP와 함께 선택적으로 사용하여 SFTP로 SSH 노드에서 파일을 전송하는 방법도 보여줍니다.

이 가이드는 Teleport 클라이언트 도구 tsh를 사용하여 PuTTY와 함께 사용할 저장된 세션을 추가하는 방법과 PuTTY를 클라이언트로 사용하여 SSH 노드에 연결하는 방법을 보여줍니다.

또한 이러한 저장된 세션을 WinSCP와 함께 선택적으로 사용하여 SFTP로 SSH 노드에서 파일을 전송하는 방법도 보여줍니다.

다음 내용을 배울 수 있습니다:

  • Teleport 클러스터에 연결된 SSH 노드에 대한 저장된 PuTTY 세션 생성.
  • 저장된 PuTTY 세션을 사용하여 대화형 셸에 로그인.
  • (선택 사항) 저장된 PuTTY 세션을 WinSCP로 가져와 SSH 노드에서 파일을 전송하는 SFTP 세션 시작.

사전 요구 사항#

  • Windows 10 이상이 실행되는 클라이언트 머신. tsh를 사용하여 PuTTY 세션을 저장하는 것은 Windows에서만 가능합니다.

  • Teleport tsh.exe 클라이언트. tsh.exe 클라이언트를 다운로드하려면 다음 명령을 실행하세요:

    $ curl.exe -O https://cdn.teleport.dev/teleport-v(=teleport.version=)-windows-amd64-bin.zip
    

    그런 다음 압축 파일의 압축을 풀고 tsh.exe%PATH%로 이동해야 합니다.

    Note

tsh.exeSystem32 디렉터리에 두지 마세요. WinSCP를 사용할 때 문제가 발생할 수 있습니다. 대신 이미 %PATH%에 포함되어 있는 %SystemRoot%(예: C:\Windows)를 사용해야 합니다.

사용 중인 Windows 시스템에 관리자 권한이 없는 경우, `%USERPROFILE%`
(예: `C:\Users\<username>`)를 대신 사용할 수 있습니다. 다만 `tsh.exe`와 같은 디렉터리에 있지 않는 한
명령줄에서 전역적으로 `tsh` 명령을 실행할 수 없다는 점에 유의하세요.

요약#

PuTTY에 저장된 세션을 추가하려면:

  1. tsh login 명령을 사용하여 Teleport 클러스터에 로그인합니다:
$ tsh login --proxy=teleport.example.com

이 명령은 사용자 인증서를 검색하여 %USERPROFILE%/.tsh 디렉터리에 있는 로컬 파일에 저장합니다.

  1. 사용자가 클러스터 내에서 연결할 수 있는 SSH 노드를 나열합니다:
$ tsh ls
Node Name                           Address        Labels
----------------------------------- -------------- ----------------------------
ip-172-31-30-140                    127.0.0.1:3022 company=acmecorp,env=aws,...
ip-172-31-34-128.us-east-2.compu... ⟵ Tunnel      access=open,enhanced_reco...
ip-172-31-8-63                      172.31.8.63:22 type=openssh
  1. 특정 노드에서 특정 로그인에 대한 저장된 세션을 Windows 레지스트리에 추가합니다.

예를 들어, 다음 명령을 실행하여 노드 ip-172-31-30-140의 로그인 ubuntu에 대한 저장된 세션을 Windows 레지스트리에 추가할 수 있습니다:

$ tsh puttyconfig ubuntu@ip-172-31-30-140
Added PuTTY session for ubuntu@ip-172-31-30-140 [proxy:teleport.example.com]

이 명령에 로그인을 지정하지 않으면 로컬 Windows 사용자 이름이 대신 사용됩니다.

클러스터 내에 등록된 OpenSSH 노드(teleport join openssh로 추가됨)에 대한 세션을 추가하는 경우, tsh puttyconfig로 세션을 추가할 때 sshd 포트(보통 22)를 지정해야 합니다:

$ tsh puttyconfig --port 22 ubuntu@ip-172-31-8-63
Added PuTTY session for ubuntu@ip-172-31-8-63 [proxy:teleport.example.com]

원한다면 tsh puttyconfig user@host:22를 사용할 수도 있습니다.

  1. tsh login 명령을 사용하여 Teleport 클러스터에 로그인합니다:
$ tsh login --proxy=mytenant.teleport.sh

이 명령은 사용자 인증서를 검색하여 %USERPROFILE%/.tsh 디렉터리에 있는 로컬 파일에 저장합니다.

  1. 사용자가 클러스터 내에서 연결할 수 있는 SSH 노드를 나열합니다:
$ tsh ls
Node Name                           Address        Labels
----------------------------------- -------------- ----------------------------
ip-172-31-30-140                    ⟵ Tunnel      company=acmecorp,env=aws,...
ip-172-31-34-128.us-east-2.compu... ⟵ Tunnel      access=open,enhanced_reco...
  1. 특정 노드에서 특정 로그인에 대한 저장된 세션을 Windows 레지스트리에 추가합니다.

예를 들어, 다음 명령을 실행하여 노드 ip-172-31-30-140의 로그인 ubuntu에 대한 저장된 세션을 Windows 레지스트리에 추가할 수 있습니다:

$ tsh puttyconfig ubuntu@ip-172-31-30-140
Added PuTTY session for ubuntu@ip-172-31-30-140 [proxy:mytenant.teleport.sh]

이 명령에 로그인을 지정하지 않으면 로컬 Windows 사용자 이름이 대신 사용됩니다.

저장된 세션을 사용하여 PuTTY로 연결하기#

  1. PuTTY를 시작하여 클러스터에 사용 가능한 저장된 세션을 확인합니다.

Main PuTTY window

  1. 세션을 더블클릭하여 Teleport를 통해 호스트에 연결합니다.

PuTTY console

호스트에 연결한 후, Teleport는 세션 시작에 대한 감사 로그 항목을 생성하고 Teleport 내의 "Active Sessions" 목록에 나타납니다.

세션 내에서 teleport status를 실행하여 Teleport 프록시를 통해 연결되어 있는지 확인하고 추적 목적으로 세션의 UUID를 출력할 수 있습니다. 클러스터에서 세션 녹화가 활성화되어 있는 경우, 세션을 중지하고 호스트 연결을 끊은 후 세션 녹화를 볼 수도 있습니다.

리프 클러스터#

사용 가능한 리프 클러스터를 나열하려면 다음 명령을 실행하세요:

$ tsh clusters
Cluster Name         Status Cluster Type Labels Selected
-----------------    ------ ------------ ------ --------
teleport.example.com online root                *
example.teleport.sh  online leaf

tsh puttyconfig 명령에 --leaf <leaf cluster name> 매개변수를 추가하여 PuTTY 세션에서 리프 클러스터에 접근할 수 있습니다.

예를 들어, 리프 클러스터의 이름이 example.teleport.sh이고 노드 이름이 ip-172-31-34-128.us-east-2.compute.internal인 경우, 다음 명령을 사용하여 로그인 ec2-user에 대한 PuTTY 세션을 추가할 수 있습니다:

$ tsh puttyconfig --leaf example.teleport.sh ec2-user@ip-172-31-34-128.us-east-2.compute.internal
Added PuTTY session for ec2-user@ip-172-31-34-128.us-east-2.compute.internal [leaf:example.teleport.sh,proxy:teleport.example.com]

세션 이름 지정#

세션은 다음 스키마를 사용하여 이름이 지정됩니다:

루트 클러스터: <login>@<hostname> [proxy:<proxy address>]

리프 클러스터: <login>@<hostname> [leaf:<leaf cluster name>,proxy:<proxy address>]

SFTP를 통해 파일을 전송하기 위해 WinSCP 사용하기#

PuTTY에서 저장된 세션을 WinSCP로 가져와서 SSH 노드에 연결하여 파일을 주고받을 수 있습니다.

  1. WinSCP를 시작합니다.

WinSCP를 시작할 때 연결할 세션 목록이 있는 Site Manager "Login" 대화 상자가 표시되지 않으면, Tabs 메뉴를 클릭하고 Sites를 선택한 다음 **Site Manager...**를 선택하여 표시합니다.

WinSCP Site Manager window

  1. 왼쪽 하단의 Tools 버튼을 클릭하고 Import Sites를 선택합니다.

Click 'Tools', then choose 'Import Sites...'

  1. WinSCP에서 사용하기 위해 가져오려는 저장된 PuTTY 세션 옆의 체크박스를 선택한 다음 "OK" 버튼을 클릭합니다.

연결하려는 호스트와 일치하는 세션이 보이지 않으면, 이 상자를 닫고 터미널에서 위에서 설명한 대로 tsh puttyconfig <user>@<host>를 실행하여 세션을 추가한 다음 이 단계를 반복하세요.

Choose PuTTY sessions to import and click OK

  1. WinSCP가 PuTTY에서 저장된 Host CA를 신뢰하고 불러오도록 지시하려면, 왼쪽 하단의 Tools를 다시 클릭한 다음 **Preferences...**를 선택합니다.
Skip remaining steps if you've done this before

이 사용자로 이 PC에서 이 과정을 이전에 완료한 적이 있다면 4단계와 5단계를 건너뛸 수 있습니다.

Click 'Tools', then choose 'Preferences...'

  1. 왼쪽의 Security 섹션을 클릭한 다음, Trusted host certification authorities 섹션 아래의 Load authorities from PuTTY 체크박스를 선택하고 OK를 클릭하여 종료합니다.

Click 'Security', Check 'Load authorities from PuTTY' then click OK

  1. 왼쪽의 목록에서 연결할 호스트를 선택하고 Login을 클릭합니다. 원한다면 이름을 더블클릭하여 세션을 시작할 수도 있습니다.

Choose the host from the list and click Login

WinSCP를 통해 Teleport를 사용하여 파일을 업로드하거나 다운로드하면 감사 이벤트가 생성됩니다.

자주 묻는 질문#

tsh puttyconfig를 실행하려면 내 머신에서 관리자 권한이 필요한가요?#

아니요, tshHKEY_CURRENT_USER 레지스트리 키에만 변경 사항을 적용합니다.

머신의 모든 사용자를 위해 저장된 PuTTY 세션을 추가할 수 있나요?#

아니요, 세션은 현재 사용자에게만 추가됩니다. 아래 설명된 레지스트리 내보내기 방법을 사용하여 다른 사용자가 가져올 수 있도록 세션을 내보낼 수 있습니다.

저장된 PuTTY 세션을 다른 머신으로 내보낼 수 있나요?#

예, Registry Editor를 사용하여 HKEY_CURRENT_USER\Software\SimonTatham\PuTTY 레지스트리 키를 파일로 내보내고 이 파일을 다른 머신에서 가져올 수 있습니다. Registry Editor를 실행하려면 관리자 권한이 필요하다는 점에 유의하세요.

저장된 PuTTY 세션의 글꼴 크기, 창 크기 또는 기타 환경 설정을 변경할 수 있나요?#

세션이 추가된 후, "Saved sessions" 목록에서 세션 이름을 클릭한 다음 Load를 클릭하여 PuTTY UI에서 세션을 변경할 수 있습니다. 필요한 모든 변경 사항을 적용한 다음, 세션을 다시 선택하고 Save를 클릭하세요.

특정 호스트에 대해 tsh puttyconfig를 다시 실행하면 저장된 세션에 적용한 사용자 지정 변경 사항이 덮어써지나요?#

Teleport는 프록시 이름, 프록시 명령, 호스트 이름, 사용자 이름, 포트 등 자신이 사용하는 구성 매개변수만 수정합니다. 글꼴 크기, 창 크기 및 기타 매개변수에 대한 변경 사항은 그대로 유지됩니다.

MobaXterm 또는 SecureCRT와 같은 다른 그래픽 클라이언트를 사용할 수 있나요?#

현재는 PuTTY 지원만 구현되어 있습니다. 대부분의 다른 그래픽 클라이언트는 Teleport를 사용하기 위해 필요한 SSH 사용자 인증서와 SSH 호스트 인증서를 모두 사용한 인증을 완전히 지원하지 않습니다.

Teleport 세션에 대한 지원 추가를 원하시면 해당 클라이언트의 제작자에게 문의하세요.

KiTTY 또는 Solar PuTTY와 같은 PuTTY 포크를 사용할 수 있나요?#

포크가 PuTTY 0.78 이상을 기반으로 하는 경우 작동할 수 있습니다. 다만 Teleport 팀은 PuTTY의 정식 버전만 테스트하며 포크 버전에 대한 지원은 제공할 수 없습니다.

저장된 Teleport PuTTY 세션을 WinSCP와 함께 사용할 수 있나요?#

예, WinSCP 6.2 버전 이상은 Teleport를 사용하여 연결하는 데 필요한 SSH 호스트 인증서를 사용한 검증을 지원합니다.

저장된 세션과 함께 대체 Teleport 인증 방법(tsh login --auth)을 사용할 수 있나요?#

아니요, PuTTY는 Teleport 클러스터에 구성된 기본 인증 방법을 사용하는 tsh proxy ssh를 호출합니다.

Teleport 인증에 대한 자세한 내용은 인증 옵션을 참조하세요.

고급 사용자는 Registry Editor를 사용하여 ProxyTelnetCommand 키 아래에서 직접 PuTTY 프록시 명령을 수정할 수 있습니다. 해당 호스트 이름에 대해 tsh puttyconfig를 다시 실행하면 이 명령이 덮어써진다는 점에 유의하세요.

문제 해결#

연결 시 WinSCP에 Server unexpectedly closed network connection 또는 Error 232: The pipe is being closed가 표시됨#

이 오류는 보통 tsh.exe 애플리케이션이 C:\Windows\System32 디렉터리에 잘못 배치된 경우 발생합니다. 이는 WinSCP에서 버그를 유발하여 런타임에 tsh.exe의 경로가 잘못 대체되면서 연결에 실패하게 됩니다. 이 버그는 PuTTY 세션에는 영향을 미치지 않는 것으로 보입니다.

이 버그의 영향을 받지 않고 tsh.exe를 저장할 수 있는 두 위치는 다음과 같습니다:

이 문제를 해결하려면 다음 단계를 따르세요:

  1. 위에서 설명한 대로 tsh.exe 애플리케이션을 다른 디렉터리에 배치합니다.
  2. 세션 내에서 tsh.exe에 대해 구성된 경로를 교체하기 위해 각 PuTTY 세션에 대해 tsh puttyconfig를 다시 실행합니다.
  3. WinSCP 내의 저장된 각 세션을 삭제합니다.
  4. 위의 2-3단계에서 설명한 과정을 따라 저장된 PuTTY 세션을 WinSCP로 다시 가져옵니다.

proxy: ERROR: access denied to <user> connecting to <proxy>#

tsh puttyconfig 명령에 잘못된 로그인 사용자 이름을 지정했습니다. Teleport 사용자/역할이 사용할 수 있는 권한이 있는 로그인 사용자 이름으로 명령을 다시 실행하세요. logins 역할 사양 또는 사용자 특성 아래에 나열된 로그인을 확인하세요.

tsh ssh로 성공적으로 로그인할 수 있다면, tsh puttyconfig에서도 동일한 로그인/호스트 이름을 사용할 수 있어야 합니다.

Connect failed [ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain]#

OpenSSH 서버에 연결을 시도할 때 tsh puttyconfig 명령에 잘못된 로그인 사용자 이름을 지정했습니다. Teleport 사용자/역할이 사용할 수 있는 권한이 있는 로그인 사용자 이름으로 명령을 다시 실행하세요. logins 역할 사양 또는 사용자 특성 아래에 나열된 로그인을 확인하세요.

tsh ssh로 성공적으로 로그인할 수 있다면, tsh puttyconfig에서도 동일한 로그인/호스트 이름을 사용할 수 있어야 합니다.

proxy: ERROR: ssh: subsystem request failed#

Teleport 프록시가 저장된 세션에 지정된 호스트/포트에 연결할 수 없습니다. 이는 노드가 오프라인 상태임을 의미할 수 있습니다. 노드가 tsh ls에 표시되는지 확인하고 tsh ssh login@hostname으로 연결할 수 있는지 확인하세요. 성공한다면 Teleport 프록시 로그에서 더 자세한 오류를 확인하세요.

노드가 Teleport가 아닌 OpenSSH를 실행 중인 경우, 세션을 추가할 때 sshd 포트를 반드시 지정해야 합니다. 예를 들어 tsh puttyconfig --port 22 user@host 또는 tsh puttyconfig user@host:22를 사용하세요.

proxy: direct dialing to nodes not found in inventory is not supported#

이 오류는 일반적으로 tsh puttyconfig를 실행하는 동안 포트를 지정하지 않은 채 에이전트리스 OpenSSH 호스트(즉, sshd를 실행 중인 호스트)를 등록한 경우 발생합니다. tsh puttyconfig --port 22 user@host를 사용하여 올바른 포트(이 예시에서는 22)로 호스트를 다시 추가해 보세요.

포트를 수정한 후에도 여전히 이 오류가 발생한다면, 연결하려는 호스트가 tsh ls의 출력에 나타나는지 확인하세요. tsh ls의 출력에 나타나지 않는 호스트 이름은 연결할 수 없습니다.

Unable to use certificate file "C:\Users\<username>\.tsh\keys\<proxy>\<user>-ssh\<cluster>-cert.pub" (unable to open file)#

Teleport에 올바르게 로그인되어 있지 않습니다. PuTTY 저장된 세션을 시작하기 전에 tsh login --proxy=<proxy hostname>을 실행하여 유효한 인증서를 받으세요.

루트 클러스터의 프록시를 사용하는 리프 클러스터에 대해 저장된 세션을 사용하는 경우, 리프 클러스터에 대해 세션을 시작하려면 루트 클러스터 자체에 로그인해야 한다는 점에 유의하세요.

ERROR: No proxy address specified, missed --proxy flag?#

로컬에 유효한 tsh 자격 증명이 없습니다. tsh login --proxy=<proxy hostname>을 실행하여 먼저 로그인하거나, tsh puttyconfig를 실행할 때 --proxy 매개변수를 제공하세요.

ERROR: validity string for TeleportHostCA-<cluster_name>...#

validity string과 관련된 오류는 특정 호스트 CA에 대해 신뢰해야 하는 호스트 이름 목록을 담고 있는 PuTTY 레지스트리 키의 잘못된 형식으로 인해 발생합니다. 잘못된 형식은 일반적으로 PuTTY GUI나 Registry Editor에서 호스트 CA 레코드를 수동으로 편집한 경우 발생합니다. 이는 결코 필요하지 않으며 강력히 권장하지 않습니다.

이 오류를 수정하려면 PuTTY를 로드하고 왼쪽의 SSH -> Host Keys -> Configure Host CAs로 이동하세요. 오류에서 일치하는 TeleportHostCA-<cluster_name> 호스트 CA 레코드를 선택하고 Load를 클릭하세요. "Valid hosts this key is trusted to certify" 아래의 항목을 직접 수정할 수 있습니다. 형식은 <hostname> || <hostname> || ...을 따라야 합니다. 또는 Delete 버튼을 클릭할 수도 있습니다.

호스트 CA 레코드를 삭제하면, 저장된 세션이 여전히 존재하더라도 해당 클러스터의 모든 Teleport SSH 서비스에 대해 PuTTY를 통해 접근하려면 tsh puttyconfig를 다시 실행해야 한다는 점에 유의하세요.

일반적인 일상 운영 중에 이 오류가 나타난다면, 이는 버그이며 GitHub를 통해 신고해야 합니다.

tsh 제거하기#

tsh 및 관련 사용자 데이터를 제거하려면 Teleport 제거하기를 참조하세요.

Teleport와 PuTTY 및 WinSCP 사용

Teleport v18.9
원문 보기
요약

이 가이드는 Teleport 클라이언트 도구 tsh를 사용하여 PuTTY와 함께 사용할 저장된 세션을 추가하는 방법과 PuTTY를 클라이언트로 사용하여 SSH 노드에 연결하는 방법을 보여줍니다. 또한 이러한 저장된 세션을 WinSCP와 함께 선택적으로 사용하여 SFTP로 SSH 노드에서 파일을 전송하는 방법도 보여줍니다.

이 가이드는 Teleport 클라이언트 도구 tsh를 사용하여 PuTTY와 함께 사용할 저장된 세션을 추가하는 방법과 PuTTY를 클라이언트로 사용하여 SSH 노드에 연결하는 방법을 보여줍니다.

또한 이러한 저장된 세션을 WinSCP와 함께 선택적으로 사용하여 SFTP로 SSH 노드에서 파일을 전송하는 방법도 보여줍니다.

다음 내용을 배울 수 있습니다:

  • Teleport 클러스터에 연결된 SSH 노드에 대한 저장된 PuTTY 세션 생성.
  • 저장된 PuTTY 세션을 사용하여 대화형 셸에 로그인.
  • (선택 사항) 저장된 PuTTY 세션을 WinSCP로 가져와 SSH 노드에서 파일을 전송하는 SFTP 세션 시작.

사전 요구 사항#

  • Windows 10 이상이 실행되는 클라이언트 머신. tsh를 사용하여 PuTTY 세션을 저장하는 것은 Windows에서만 가능합니다.

  • Teleport tsh.exe 클라이언트. tsh.exe 클라이언트를 다운로드하려면 다음 명령을 실행하세요:

    $ curl.exe -O https://cdn.teleport.dev/teleport-v(=teleport.version=)-windows-amd64-bin.zip
    

    그런 다음 압축 파일의 압축을 풀고 tsh.exe%PATH%로 이동해야 합니다.

    Note

tsh.exeSystem32 디렉터리에 두지 마세요. WinSCP를 사용할 때 문제가 발생할 수 있습니다. 대신 이미 %PATH%에 포함되어 있는 %SystemRoot%(예: C:\Windows)를 사용해야 합니다.

사용 중인 Windows 시스템에 관리자 권한이 없는 경우, `%USERPROFILE%`
(예: `C:\Users\<username>`)를 대신 사용할 수 있습니다. 다만 `tsh.exe`와 같은 디렉터리에 있지 않는 한
명령줄에서 전역적으로 `tsh` 명령을 실행할 수 없다는 점에 유의하세요.

요약#

PuTTY에 저장된 세션을 추가하려면:

  1. tsh login 명령을 사용하여 Teleport 클러스터에 로그인합니다:
$ tsh login --proxy=teleport.example.com

이 명령은 사용자 인증서를 검색하여 %USERPROFILE%/.tsh 디렉터리에 있는 로컬 파일에 저장합니다.

  1. 사용자가 클러스터 내에서 연결할 수 있는 SSH 노드를 나열합니다:
$ tsh ls
Node Name                           Address        Labels
----------------------------------- -------------- ----------------------------
ip-172-31-30-140                    127.0.0.1:3022 company=acmecorp,env=aws,...
ip-172-31-34-128.us-east-2.compu... ⟵ Tunnel      access=open,enhanced_reco...
ip-172-31-8-63                      172.31.8.63:22 type=openssh
  1. 특정 노드에서 특정 로그인에 대한 저장된 세션을 Windows 레지스트리에 추가합니다.

예를 들어, 다음 명령을 실행하여 노드 ip-172-31-30-140의 로그인 ubuntu에 대한 저장된 세션을 Windows 레지스트리에 추가할 수 있습니다:

$ tsh puttyconfig ubuntu@ip-172-31-30-140
Added PuTTY session for ubuntu@ip-172-31-30-140 [proxy:teleport.example.com]

이 명령에 로그인을 지정하지 않으면 로컬 Windows 사용자 이름이 대신 사용됩니다.

클러스터 내에 등록된 OpenSSH 노드(teleport join openssh로 추가됨)에 대한 세션을 추가하는 경우, tsh puttyconfig로 세션을 추가할 때 sshd 포트(보통 22)를 지정해야 합니다:

$ tsh puttyconfig --port 22 ubuntu@ip-172-31-8-63
Added PuTTY session for ubuntu@ip-172-31-8-63 [proxy:teleport.example.com]

원한다면 tsh puttyconfig user@host:22를 사용할 수도 있습니다.

  1. tsh login 명령을 사용하여 Teleport 클러스터에 로그인합니다:
$ tsh login --proxy=mytenant.teleport.sh

이 명령은 사용자 인증서를 검색하여 %USERPROFILE%/.tsh 디렉터리에 있는 로컬 파일에 저장합니다.

  1. 사용자가 클러스터 내에서 연결할 수 있는 SSH 노드를 나열합니다:
$ tsh ls
Node Name                           Address        Labels
----------------------------------- -------------- ----------------------------
ip-172-31-30-140                    ⟵ Tunnel      company=acmecorp,env=aws,...
ip-172-31-34-128.us-east-2.compu... ⟵ Tunnel      access=open,enhanced_reco...
  1. 특정 노드에서 특정 로그인에 대한 저장된 세션을 Windows 레지스트리에 추가합니다.

예를 들어, 다음 명령을 실행하여 노드 ip-172-31-30-140의 로그인 ubuntu에 대한 저장된 세션을 Windows 레지스트리에 추가할 수 있습니다:

$ tsh puttyconfig ubuntu@ip-172-31-30-140
Added PuTTY session for ubuntu@ip-172-31-30-140 [proxy:mytenant.teleport.sh]

이 명령에 로그인을 지정하지 않으면 로컬 Windows 사용자 이름이 대신 사용됩니다.

저장된 세션을 사용하여 PuTTY로 연결하기#

  1. PuTTY를 시작하여 클러스터에 사용 가능한 저장된 세션을 확인합니다.

Main PuTTY window

  1. 세션을 더블클릭하여 Teleport를 통해 호스트에 연결합니다.

PuTTY console

호스트에 연결한 후, Teleport는 세션 시작에 대한 감사 로그 항목을 생성하고 Teleport 내의 "Active Sessions" 목록에 나타납니다.

세션 내에서 teleport status를 실행하여 Teleport 프록시를 통해 연결되어 있는지 확인하고 추적 목적으로 세션의 UUID를 출력할 수 있습니다. 클러스터에서 세션 녹화가 활성화되어 있는 경우, 세션을 중지하고 호스트 연결을 끊은 후 세션 녹화를 볼 수도 있습니다.

리프 클러스터#

사용 가능한 리프 클러스터를 나열하려면 다음 명령을 실행하세요:

$ tsh clusters
Cluster Name         Status Cluster Type Labels Selected
-----------------    ------ ------------ ------ --------
teleport.example.com online root                *
example.teleport.sh  online leaf

tsh puttyconfig 명령에 --leaf <leaf cluster name> 매개변수를 추가하여 PuTTY 세션에서 리프 클러스터에 접근할 수 있습니다.

예를 들어, 리프 클러스터의 이름이 example.teleport.sh이고 노드 이름이 ip-172-31-34-128.us-east-2.compute.internal인 경우, 다음 명령을 사용하여 로그인 ec2-user에 대한 PuTTY 세션을 추가할 수 있습니다:

$ tsh puttyconfig --leaf example.teleport.sh ec2-user@ip-172-31-34-128.us-east-2.compute.internal
Added PuTTY session for ec2-user@ip-172-31-34-128.us-east-2.compute.internal [leaf:example.teleport.sh,proxy:teleport.example.com]

세션 이름 지정#

세션은 다음 스키마를 사용하여 이름이 지정됩니다:

루트 클러스터: <login>@<hostname> [proxy:<proxy address>]

리프 클러스터: <login>@<hostname> [leaf:<leaf cluster name>,proxy:<proxy address>]

SFTP를 통해 파일을 전송하기 위해 WinSCP 사용하기#

PuTTY에서 저장된 세션을 WinSCP로 가져와서 SSH 노드에 연결하여 파일을 주고받을 수 있습니다.

  1. WinSCP를 시작합니다.

WinSCP를 시작할 때 연결할 세션 목록이 있는 Site Manager "Login" 대화 상자가 표시되지 않으면, Tabs 메뉴를 클릭하고 Sites를 선택한 다음 **Site Manager...**를 선택하여 표시합니다.

WinSCP Site Manager window

  1. 왼쪽 하단의 Tools 버튼을 클릭하고 Import Sites를 선택합니다.

Click 'Tools', then choose 'Import Sites...'

  1. WinSCP에서 사용하기 위해 가져오려는 저장된 PuTTY 세션 옆의 체크박스를 선택한 다음 "OK" 버튼을 클릭합니다.

연결하려는 호스트와 일치하는 세션이 보이지 않으면, 이 상자를 닫고 터미널에서 위에서 설명한 대로 tsh puttyconfig <user>@<host>를 실행하여 세션을 추가한 다음 이 단계를 반복하세요.

Choose PuTTY sessions to import and click OK

  1. WinSCP가 PuTTY에서 저장된 Host CA를 신뢰하고 불러오도록 지시하려면, 왼쪽 하단의 Tools를 다시 클릭한 다음 **Preferences...**를 선택합니다.
Skip remaining steps if you've done this before

이 사용자로 이 PC에서 이 과정을 이전에 완료한 적이 있다면 4단계와 5단계를 건너뛸 수 있습니다.

Click 'Tools', then choose 'Preferences...'

  1. 왼쪽의 Security 섹션을 클릭한 다음, Trusted host certification authorities 섹션 아래의 Load authorities from PuTTY 체크박스를 선택하고 OK를 클릭하여 종료합니다.

Click 'Security', Check 'Load authorities from PuTTY' then click OK

  1. 왼쪽의 목록에서 연결할 호스트를 선택하고 Login을 클릭합니다. 원한다면 이름을 더블클릭하여 세션을 시작할 수도 있습니다.

Choose the host from the list and click Login

WinSCP를 통해 Teleport를 사용하여 파일을 업로드하거나 다운로드하면 감사 이벤트가 생성됩니다.

자주 묻는 질문#

tsh puttyconfig를 실행하려면 내 머신에서 관리자 권한이 필요한가요?#

아니요, tshHKEY_CURRENT_USER 레지스트리 키에만 변경 사항을 적용합니다.

머신의 모든 사용자를 위해 저장된 PuTTY 세션을 추가할 수 있나요?#

아니요, 세션은 현재 사용자에게만 추가됩니다. 아래 설명된 레지스트리 내보내기 방법을 사용하여 다른 사용자가 가져올 수 있도록 세션을 내보낼 수 있습니다.

저장된 PuTTY 세션을 다른 머신으로 내보낼 수 있나요?#

예, Registry Editor를 사용하여 HKEY_CURRENT_USER\Software\SimonTatham\PuTTY 레지스트리 키를 파일로 내보내고 이 파일을 다른 머신에서 가져올 수 있습니다. Registry Editor를 실행하려면 관리자 권한이 필요하다는 점에 유의하세요.

저장된 PuTTY 세션의 글꼴 크기, 창 크기 또는 기타 환경 설정을 변경할 수 있나요?#

세션이 추가된 후, "Saved sessions" 목록에서 세션 이름을 클릭한 다음 Load를 클릭하여 PuTTY UI에서 세션을 변경할 수 있습니다. 필요한 모든 변경 사항을 적용한 다음, 세션을 다시 선택하고 Save를 클릭하세요.

특정 호스트에 대해 tsh puttyconfig를 다시 실행하면 저장된 세션에 적용한 사용자 지정 변경 사항이 덮어써지나요?#

Teleport는 프록시 이름, 프록시 명령, 호스트 이름, 사용자 이름, 포트 등 자신이 사용하는 구성 매개변수만 수정합니다. 글꼴 크기, 창 크기 및 기타 매개변수에 대한 변경 사항은 그대로 유지됩니다.

MobaXterm 또는 SecureCRT와 같은 다른 그래픽 클라이언트를 사용할 수 있나요?#

현재는 PuTTY 지원만 구현되어 있습니다. 대부분의 다른 그래픽 클라이언트는 Teleport를 사용하기 위해 필요한 SSH 사용자 인증서와 SSH 호스트 인증서를 모두 사용한 인증을 완전히 지원하지 않습니다.

Teleport 세션에 대한 지원 추가를 원하시면 해당 클라이언트의 제작자에게 문의하세요.

KiTTY 또는 Solar PuTTY와 같은 PuTTY 포크를 사용할 수 있나요?#

포크가 PuTTY 0.78 이상을 기반으로 하는 경우 작동할 수 있습니다. 다만 Teleport 팀은 PuTTY의 정식 버전만 테스트하며 포크 버전에 대한 지원은 제공할 수 없습니다.

저장된 Teleport PuTTY 세션을 WinSCP와 함께 사용할 수 있나요?#

예, WinSCP 6.2 버전 이상은 Teleport를 사용하여 연결하는 데 필요한 SSH 호스트 인증서를 사용한 검증을 지원합니다.

저장된 세션과 함께 대체 Teleport 인증 방법(tsh login --auth)을 사용할 수 있나요?#

아니요, PuTTY는 Teleport 클러스터에 구성된 기본 인증 방법을 사용하는 tsh proxy ssh를 호출합니다.

Teleport 인증에 대한 자세한 내용은 인증 옵션을 참조하세요.

고급 사용자는 Registry Editor를 사용하여 ProxyTelnetCommand 키 아래에서 직접 PuTTY 프록시 명령을 수정할 수 있습니다. 해당 호스트 이름에 대해 tsh puttyconfig를 다시 실행하면 이 명령이 덮어써진다는 점에 유의하세요.

문제 해결#

연결 시 WinSCP에 Server unexpectedly closed network connection 또는 Error 232: The pipe is being closed가 표시됨#

이 오류는 보통 tsh.exe 애플리케이션이 C:\Windows\System32 디렉터리에 잘못 배치된 경우 발생합니다. 이는 WinSCP에서 버그를 유발하여 런타임에 tsh.exe의 경로가 잘못 대체되면서 연결에 실패하게 됩니다. 이 버그는 PuTTY 세션에는 영향을 미치지 않는 것으로 보입니다.

이 버그의 영향을 받지 않고 tsh.exe를 저장할 수 있는 두 위치는 다음과 같습니다:

이 문제를 해결하려면 다음 단계를 따르세요:

  1. 위에서 설명한 대로 tsh.exe 애플리케이션을 다른 디렉터리에 배치합니다.
  2. 세션 내에서 tsh.exe에 대해 구성된 경로를 교체하기 위해 각 PuTTY 세션에 대해 tsh puttyconfig를 다시 실행합니다.
  3. WinSCP 내의 저장된 각 세션을 삭제합니다.
  4. 위의 2-3단계에서 설명한 과정을 따라 저장된 PuTTY 세션을 WinSCP로 다시 가져옵니다.

proxy: ERROR: access denied to <user> connecting to <proxy>#

tsh puttyconfig 명령에 잘못된 로그인 사용자 이름을 지정했습니다. Teleport 사용자/역할이 사용할 수 있는 권한이 있는 로그인 사용자 이름으로 명령을 다시 실행하세요. logins 역할 사양 또는 사용자 특성 아래에 나열된 로그인을 확인하세요.

tsh ssh로 성공적으로 로그인할 수 있다면, tsh puttyconfig에서도 동일한 로그인/호스트 이름을 사용할 수 있어야 합니다.

Connect failed [ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain]#

OpenSSH 서버에 연결을 시도할 때 tsh puttyconfig 명령에 잘못된 로그인 사용자 이름을 지정했습니다. Teleport 사용자/역할이 사용할 수 있는 권한이 있는 로그인 사용자 이름으로 명령을 다시 실행하세요. logins 역할 사양 또는 사용자 특성 아래에 나열된 로그인을 확인하세요.

tsh ssh로 성공적으로 로그인할 수 있다면, tsh puttyconfig에서도 동일한 로그인/호스트 이름을 사용할 수 있어야 합니다.

proxy: ERROR: ssh: subsystem request failed#

Teleport 프록시가 저장된 세션에 지정된 호스트/포트에 연결할 수 없습니다. 이는 노드가 오프라인 상태임을 의미할 수 있습니다. 노드가 tsh ls에 표시되는지 확인하고 tsh ssh login@hostname으로 연결할 수 있는지 확인하세요. 성공한다면 Teleport 프록시 로그에서 더 자세한 오류를 확인하세요.

노드가 Teleport가 아닌 OpenSSH를 실행 중인 경우, 세션을 추가할 때 sshd 포트를 반드시 지정해야 합니다. 예를 들어 tsh puttyconfig --port 22 user@host 또는 tsh puttyconfig user@host:22를 사용하세요.

proxy: direct dialing to nodes not found in inventory is not supported#

이 오류는 일반적으로 tsh puttyconfig를 실행하는 동안 포트를 지정하지 않은 채 에이전트리스 OpenSSH 호스트(즉, sshd를 실행 중인 호스트)를 등록한 경우 발생합니다. tsh puttyconfig --port 22 user@host를 사용하여 올바른 포트(이 예시에서는 22)로 호스트를 다시 추가해 보세요.

포트를 수정한 후에도 여전히 이 오류가 발생한다면, 연결하려는 호스트가 tsh ls의 출력에 나타나는지 확인하세요. tsh ls의 출력에 나타나지 않는 호스트 이름은 연결할 수 없습니다.

Unable to use certificate file "C:\Users\<username>\.tsh\keys\<proxy>\<user>-ssh\<cluster>-cert.pub" (unable to open file)#

Teleport에 올바르게 로그인되어 있지 않습니다. PuTTY 저장된 세션을 시작하기 전에 tsh login --proxy=<proxy hostname>을 실행하여 유효한 인증서를 받으세요.

루트 클러스터의 프록시를 사용하는 리프 클러스터에 대해 저장된 세션을 사용하는 경우, 리프 클러스터에 대해 세션을 시작하려면 루트 클러스터 자체에 로그인해야 한다는 점에 유의하세요.

ERROR: No proxy address specified, missed --proxy flag?#

로컬에 유효한 tsh 자격 증명이 없습니다. tsh login --proxy=<proxy hostname>을 실행하여 먼저 로그인하거나, tsh puttyconfig를 실행할 때 --proxy 매개변수를 제공하세요.

ERROR: validity string for TeleportHostCA-<cluster_name>...#

validity string과 관련된 오류는 특정 호스트 CA에 대해 신뢰해야 하는 호스트 이름 목록을 담고 있는 PuTTY 레지스트리 키의 잘못된 형식으로 인해 발생합니다. 잘못된 형식은 일반적으로 PuTTY GUI나 Registry Editor에서 호스트 CA 레코드를 수동으로 편집한 경우 발생합니다. 이는 결코 필요하지 않으며 강력히 권장하지 않습니다.

이 오류를 수정하려면 PuTTY를 로드하고 왼쪽의 SSH -> Host Keys -> Configure Host CAs로 이동하세요. 오류에서 일치하는 TeleportHostCA-<cluster_name> 호스트 CA 레코드를 선택하고 Load를 클릭하세요. "Valid hosts this key is trusted to certify" 아래의 항목을 직접 수정할 수 있습니다. 형식은 <hostname> || <hostname> || ...을 따라야 합니다. 또는 Delete 버튼을 클릭할 수도 있습니다.

호스트 CA 레코드를 삭제하면, 저장된 세션이 여전히 존재하더라도 해당 클러스터의 모든 Teleport SSH 서비스에 대해 PuTTY를 통해 접근하려면 tsh puttyconfig를 다시 실행해야 한다는 점에 유의하세요.

일반적인 일상 운영 중에 이 오류가 나타난다면, 이는 버그이며 GitHub를 통해 신고해야 합니다.

tsh 제거하기#

tsh 및 관련 사용자 데이터를 제거하려면 Teleport 제거하기를 참조하세요.