우분투에서 teleport를 설치하는 방법(1)
우분투에서 텔레포트(teleport)를 설치하는 방법(1)
텔레포트(teleport)는 SSH와 같은 원격 접속 프로토콜을 이용하여 서버나 클러스터에 접속할 수 있는 오픈소스 도구입니다.
테스트 환경
$ 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
웹 UI 액세스
Teleport는 웹 UI를 제공하여 모든 노드와 로그를 중앙에서 관리할 수 있습니다.
https://<서버의 IP 주소>:443
역할(Role) 확인
참고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/