인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
서버 접근 문제 해결
이 섹션에서는 Teleport를 통해 서버 접근을 관리하는 동안 발생할 수 있는 일반적인 문제와 이를 해결하거나 우회하는 방법에 대해 설명합니다.
SSH 세션 시작 실패
새로운 SSH 세션을 시작할 때, Teleport는 자신을 포크하고 자식 프로세스는 연결을 시도하는 OS 사용자로 실행됩니다. teleport
바이너리에 대한 파일 시스템 권한에 이 사용자를 위한 실행 권한이 포함되어 있지 않으면 세션이 시작되지 않습니다.
이 문제는 새로 설치된 소프트웨어가 모든 사용자가 실행할 수 없도록 차단하는 시스템으로 인해 발생할 수 있습니다.
증상
이 문제는 연결이 끊어진 세션과 다음과 유사한 오류 메시지를 초래합니다:
Failed to launch: fork/exec /proc/self/exe: permission denied.
Process exited with status 255
해결책
teleport
바이너리에 대한 권한 설정을 확인해야 합니다.
teleport
바이너리의 파일 시스템 권한을 확인하려면:
-
teleport
서비스를 설치한 컴퓨터에서 터미널 셸을 엽니다. -
다음 명령을 실행하여 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) -
teleport
서비스를 재시작합니다.
싱글 사인온 사용자에 대한 로그인 누락
외부 ID 제공자를 사용하여 사용자에게 싱글 사인온을 활성화하는 경우, 이러한 사용자에게 로그인을 할당해야 합니다.
증상
외부 ID 제공자를 위한 인증 커넥터를 통해 Teleport에 접근하는 사용자는 원격 리소스에 접근하는 데 필요한 로그인 정보를 확인할 수 없습니다.
해결책
이 문제를 해결하려면, 인증 커넥터의 구성이 싱글 사인온 사용자에게 로그인을 할당하는지 확인하거나 외부 ID 제공자의 그룹 멤버십을 통해 사용자에게 할당된 Teleport 역할의 특성을 수정해야 합니다. 역할에서 특성을 사용하는 방법에 대한 자세한 내용은 Role Templates를 참조하십시오.
서버 목록에 포함된 오프라인 서버
경우에 따라 tsh ls
또는 tctl nodes ls
명령을 실행하면 오프라인 서버가 포함될 수 있습니다. 예를 들어, Teleport Proxy Service에 하트비트를 전송하던 서버가 중지되면, 해당 서버는 tsh ls
또는 tctl nodes ls
명령의 출력에서 10분 이상 계속 사용할 수 있는 것으로 나열될 수 있습니다.
증상
응답하지 않는 서버가 tsh ls
또는 tctl nodes ls
명령의 출력에서 사용 가능한 것으로 나열됩니다. 예를 들어, 이러한 명령 중 하나를 실행했을 때 Teleport Proxy Service에 하트비트 신호를 보낸 적이 있는 서버가 오프라인 상태일 경우 다음과 유사한 출력을 볼 수 있습니다:
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
값은 현재로부터 상대적으로 일관되게 유지되어야 하며, 예를 들어 현재 시간으로부터 810분이 되어야 합니다. 만료 시간이 일반적인 만료 시간보다 짧고, 예를 들어 현재 시간으로부터 다음 23분 이내라면, 서버가 하트비트를 멈춘 가능성이 높습니다.
공유 세션에 참여할 수 없음
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