Infograb logo
서버 접근 문제 해결

이 섹션에서는 Teleport를 사용하여 서버 접근을 관리할 때 발생할 수 있는 일반적인 문제와 이를 해결하거나 우회하는 방법을 설명합니다.

SSH 세션 시작 실패

새 SSH 세션을 시작하면 Teleport가 fork되고 자식 프로세스가 연결을 시도하는 OS 사용자로 실행됩니다. 만약 teleport 바이너리의 파일 시스템 권한에 이 사용자가 실행할 수 있는 권한이 포함되어 있지 않으면 세션이 시작되지 않습니다.

이 문제는 새로 설치된 소프트웨어가 모든 사용자가 실행할 수 없도록 제한하는 시스템에서 발생할 수 있습니다.

증상

이 문제는 세션이 연결이 끊기고 다음과 유사한 오류 메시지가 나타나는 결과를 초래합니다:

Failed to launch: fork/exec /proc/self/exe: permission denied.
Process exited with status 255

해결책

teleport 바이너리의 권한 설정을 확인해야 합니다.

teleport 바이너리의 파일 시스템 권한을 확인하려면:

  1. teleport 서비스를 설치한 컴퓨터에서 터미널 셸을 엽니다.

  2. 다음 명령어를 실행하여 Teleport 바이너리의 위치와 파일 시스템 권한을 확인합니다:

    ls -al $(which teleport)

    이 명령어는 다음과 유사한 출력을 반환해야 합니다:

    -rwxr-xr-x  1 root  wheel  531849504 Aug 30 18:32 /usr/local/bin/teleport
    

    다른 사용자가 읽고 실행할 수 있는 권한이 없는 경우 (-rwxr-xr-x) 권한을 업데이트해야 합니다. 예를 들어:

    sudo chmod go+rx $(which teleport)
  3. teleport 서비스를 재시작합니다.

싱글 사인온 사용자에 대한 로그인 누락

외부 ID 공급자를 사용하여 사용자의 싱글 사인온을 활성화하는 경우, 해당 사용자에게 로그인을 할당해야 합니다.

증상

외부 ID 공급자를 위한 인증 커넥터를 통해 Teleport에 접근하는 사용자는 원격 리소스에 접근하는 데 필요한 로그인이 보이지 않습니다.

해결책

이 문제를 해결하려면 auth 커넥터의 구성이 싱글 사인온 사용자에게 로그인을 할당하는지 확인하거나 외부 ID 공급자를 통한 그룹 멤버십에 따라 사용자에게 할당된 Teleport 역할의 속성을 수정해야 합니다. 역할에서 속성을 사용하는 방법에 대한 자세한 정보는 역할 템플릿을 참조하십시오.

오프라인 서버가 서버 목록에 포함됨

일부 경우, tsh ls 또는 tctl nodes ls 명령을 실행하면 오프라인인 서버가 포함될 수 있습니다. 예를 들어, Teleport Proxy Service에 하트비트를 보내는 것을 중단한 서버는 tsh ls 또는 tctl nodes ls 명령의 출력에서 여전히 사용 가능한 것으로 나열될 수 있습니다.

증상

응답이 없는 서버가 tsh ls 또는 tctl nodes ls 명령의 출력에 사용 가능한 것으로 나열됩니다. 예를 들어, 다음과 유사한 출력을 확인할 수 있습니다:

Node Name      Address        Labels                  
-------------- -------------- ----------------------- 
ip-172-3-1-242 127.0.0.1:3022 hostname=ip-172-3-1-242 
ip-172-3-1-75  ⟵ Tunnel       hostname=ip-172-3-1-75  
ip-172-3-2-177 ⟵ Tunnel       hostname=ip-172-3-2-177

해결책

하트비트를 보내던 서버가 응답이 없는지 확인하기 위해, --format json 명령어 옵션을 사용하여 tsh ls 또는 tctl nodes ls 명령을 실행하여 추가 정보를 확인할 수 있습니다. 예를 들어:

    "kind": "node",
    "version": "v2",
    "metadata": {
      "name": "c78612d9-dab4-497f-a4d8-59ddb7edc6e9",
      "labels": {
        "teleport.internal/resource-id": "3547a530-3b58-4f65-8335-c5cf99c7b374"
      },
      "expires": "2023-09-15T21:40:17.653190645Z",
      "id": 1694813417653574518
    },

서버가 정기적으로 하트비트 신호를 보내면 expires 값은 현재 시간으로부터 상대적으로 일관되게 유지되어야 하며, 일반적으로 8~10분 정도입니다. 만약 만료 시간이 일반적인 만료 시간보다 짧고(예를 들어, 현재 시간에서 2~3분 이내라면)서버가 하트비트를 멈췄을 가능성이 높습니다.

공유 세션에 참여할 수 없음

Teleport는 여러 사용자가 활성 세션을 관찰하거나 참여할 수 있도록 합니다. 사용자가 tsh 및 Teleport 웹 UI에서 다른 사용자의 세션에 참여할 수 있도록 규칙을 정의하고 역할 기반 정책을 구성할 수 있습니다. 공유 세션에 참여할 수 없는 경우, 역할 할당을 확인하고 join_session 권한이 포함된 역할을 가지고 있는지 확인해야 합니다. 예를 들어:

kind: role
metadata:
  name: auditor
version: v6
spec:
  allow:
    join_sessions:
      - name: Join prod sessions
        roles : ['prod-access']
        kinds: ['k8s', 'ssh']
        modes: ['moderator', 'observer']

조정된 세션과 세션 공유에 대한 자세한 정보는 조정된 세션을 참조하십시오.

루트 사용자로 에이전트 없는 OpenSSH 서버에 연결할 수 없음

/etc/ssh/sshd_config에서 PermitRootLogin no 또는 PermitRootLogin forced-commands-only와 같은 설정을 확인해야 합니다. 이러한 설정은 루트로 로그인하는 것을 차단합니다. Teleport를 통해 OpenSSH 서버에 루트로 로그인하려면 이 설정을 PermitRootLogin prohibit-password로 변경하는 것이 좋습니다.

변경 사항이 적용되도록 sshd를 재시작해야 합니다:

sudo systemctl restart sshd
Teleport 원문 보기