리눅스

우분투에서 teleport를 설치하는 방법(1)

변군이글루 2024. 11. 20. 09:46
반응형

우분투에서 텔레포트(teleport)를 설치하는 방법(1)

텔레포트(teleport)는 SSH와 같은 원격 접속 프로토콜을 이용하여 서버나 클러스터에 접속할 수 있는 오픈소스 도구입니다.

 

teleport

테스트 환경

$ lsb_release -d
Description:    Ubuntu 24.04 LTS

1. Teleport 설치

환경 변수 할당

export TELEPORT_PKG=teleport
export TELEPORT_VERSION=v17
export TELEPORT_CHANNEL=stable/${TELEPORT_VERSION?}
source /etc/os-release

Teleport PGP 공개 키 다운로드

sudo curl -s https://apt.releases.teleport.dev/gpg \
-o /usr/share/keyrings/teleport-archive-keyring.asc

Teleport APT 저장소 추가

echo "deb [signed-by=/usr/share/keyrings/teleport-archive-keyring.asc] \
https://apt.releases.teleport.dev/${ID?} ${VERSION_CODENAME?} \
${TELEPORT_CHANNEL?}" \
| sudo tee /etc/apt/sources.list.d/teleport.list > /dev/null
$ cat /etc/apt/sources.list.d/teleport.list
deb [signed-by=/usr/share/keyrings/teleport-archive-keyring.asc] https://apt.releases.teleport.dev/ubuntu noble stable/v17

Teleport 설치하기

sudo apt-get update
sudo apt-get install -y teleport

Teleport 버전 정보

teleport version
Teleport v17.0.1 git:v17.0.1-0-gdc583710 go1.23.3

tctl 관리자 도구 버전 정보

$ tctl version
Teleport v17.0.1 git:v17.0.1-0-gdc583710 go1.23.3

tsh 클라이언트 도구 버전 정보

$ tsh version
Teleport v17.0.1 git:v17.0.1-0-gdc583710 go1.23.3

2. Teleport 설정

Teleport는 teleport.yaml 설정 파일을 통해 작동합니다. 초기 설정 파일은 /etc/teleport.yaml 경로에 생성됩니다.

기본 설정 파일 생성

sudo teleport configure --output=/etc/teleport.yaml
A Teleport configuration file has been created at "/etc/teleport.yaml".
To start Teleport with this configuration file, run:

teleport start --config="/etc/teleport.yaml"

Happy Teleporting!
더보기

---

주요 설정 항목

cat /etc/teleport.yaml

Cluster 이름

version: v3
teleport:
  nodename: node141
  data_dir: /var/lib/teleport
  log:
    output: stderr
    severity: INFO
    format:
      output: text
  ca_pin: ""
  diag_addr: ""
auth_service:
  enabled: "yes"
  listen_addr: 0.0.0.0:3025
  proxy_listener_mode: multiplex

Node 서비스 활성화

ssh_service:
  enabled: "yes"

Web UI 활성화

proxy_service:
  enabled: "yes"
  https_keypairs: []
  https_keypairs_reload_interval: 0s
  acme: {}

---

SSL 설정

기존에 발급받은 공인 인증서를 Teleport 프록시에 직접 설정할 수 있습니다.

 

인증서 파일 복사

mkdir -p /etc/teleport/ssl
  • https_key_file : 개인 키 경로
  • https_cert_file : 인증서 경로

SSL 인증서 추가 후 구성 파일 생성

sudo teleport configure --output=file \
--cluster-name=teleport.scbyun.com \
--public-addr=teleport.scbyun.com:443 \
--cert-file=/etc/teleport/ssl/fullchain.pem \
--key-file=/etc/teleport/ssl/privkey.pem \
--data-dir=/var/lib/teleport
sudo teleport configure --test /etc/teleport.yaml

Teleport 구성 파일

sudo vim /etc/teleport.yaml
version: v3

teleport:
  nodename: node141
  data_dir: /var/lib/teleport
  log:
    output: /var/log/teleport/teleport.log
    severity: INFO
    format:
      output: text
      extra_fields: [level, timestamp, component, caller]
  ca_pin: ""
  diag_addr: ""

auth_service:
  enabled: "yes"
  listen_addr: 0.0.0.0:3025
  cluster_name: teleport.scbyun.com
  proxy_listener_mode: multiplex

ssh_service:
  enabled: "yes"

proxy_service:
  enabled: "yes"
  web_listen_addr: 0.0.0.0:443
  public_addr: teleport.scbyun.com:443
  https_keypairs:
  - key_file: /var/lib/teleport/ssl/privkey.pem
    cert_file: /var/lib/teleport/ssl/fullchain.pem
  https_keypairs_reload_interval: 0s
  acme: {}
더보기

---

Let's Encrypt를 사용한 SSL 설정

sudo teleport configure \
--output=file \
--cluster-name=teleport.example.com \
--public-addr=teleport.example.com:443 \
--acme --acme-email=user@example.com \
--data-dir=/var/lib/teleport
A Teleport configuration file has been created at "/etc/teleport.yaml".
To start Teleport with this configuration file, run:

teleport start --config="/etc/teleport.yaml"

Happy Teleporting!

teleport 구성 파일

cat /etc/teleport.yaml
version: v3

teleport:
  nodename: node1
  data_dir: /var/lib/teleport
  log:
    output: stderr
    severity: INFO
    format:
      output: text
  ca_pin: ""
  diag_addr: ""

auth_service:
  enabled: "yes"
  listen_addr: 0.0.0.0:3025
  cluster_name: teleport.scbyun.com
  proxy_listener_mode: multiplex

ssh_service:
  enabled: "yes"

proxy_service:
  enabled: "yes"
  web_listen_addr: 0.0.0.0:443
  public_addr: teleport.scbyun.com:443
  https_keypairs: []
  https_keypairs_reload_interval: 0s
  acme:
    enabled: "yes"
    email: user@scbyun.com

---

텔레포트 서비스 활성화 및 시작

  • 텔레포트 서비스를 부팅 시 자동으로 시작하도록 설정합니다.
sudo systemctl enable --now teleport
sudo systemctl restart teleport
sudo systemctl status teleport
$ ps -ef | grep -v grep | grep teleport
root        4150       1  3 10:18 ?        00:00:03 /usr/local/bin/teleport start --config /etc/teleport.yaml --pid-file=/run/teleport.pid
$ netstat -nlpt | grep teleport
tcp6       0      0 :::3025                 :::*    LISTEN      2632/teleport
tcp6       0      0 :::3022                 :::*    LISTEN      2632/teleport
tcp6       0      0 :::443                  :::*    LISTEN      2632/teleport

3. SSH 접근 제어

Teleport를 통해 SSH 접근을 관리하려면 사용자를 생성하고 인증 토큰을 발급해야 합니다.

사용자를 생성하고 역할 설정

tctl 명령어를 사용해 사용자와 역할을 설정합니다.

  • 사용자 생성
tctl users add <username> --roles=access

사용자를 다시 생성

더보기

---

기존 사용자 삭제

tctl users rm tadmin

 새 사용자 생성

tctl users add tadmin --logins=tadmin,root --roles=access,editor

 삭제하지 않고 역할 갱신

tctl users update tadmin --set-roles=access,editor

토근 다시 생성

tctl users reset tadmin

---

tctl users add tadmin --logins=tadmin,root --roles=access,editor
$ tctl users add tadmin --logins=tadmin,root --roles=access,editor
User "tadmin" has been created but requires a password. Share this URL with the user to complete user setup, link is valid for 1h:
https://192.168.0.141:443/web/invite/b82feb3bde58209dc362b7797e57884f

NOTE: Make sure 192.168.0.141:443 points at a Teleport proxy which users can access.

텔레포트 웹 UI 액세스

텔레포트 웹 인터페이스에 액세스하려면 웹 브라우저에서 다음 URL을 엽니다.

https://192.168.0.141:443/web/invite/b82feb3bde58209dc362b7797e57884f

teleport
teleport
teleport
teleport
teleport

웹 UI 액세스

Teleport는 웹 UI를 제공하여 모든 노드와 로그를 중앙에서 관리할 수 있습니다.

https://<서버의 IP 주소>:443

teleport
teleport

역할(Role) 확인

- Teleport Role Templates

teleport

 

참고URL

- Labels : https://goteleport.com/docs/management/admin/labels/

- Download Teleport : https://goteleport.com/download/#install-links

- Try out Teleport on a Linux Server : https://goteleport.com/docs/try-out-teleport/linux-server/

- How to use Let's Encrypt with an SSH Bastion : https://goteleport.com/blog/letsencrypt-teleport-ssh/

 

728x90
반응형