GoTeleport - Intégration d'une ressource Linux
📋 Pré-requis
Pour réaliser les étapes de ce guide, vérifiez que votre environnement répond aux exigences suivantes :
- Vous disposez d'un cluster Teleport opérationnel dans une version récente supportée. Les versions majeures sont supportées pendant un an. La liste des releases est disponible sur leur site :
- Les releases à venir https://goteleport.com/docs/upcoming-releases/
- Les releases passées : https://goteleport.com/docs/changelog/
- Disposer des clients
tctlet de l'outil clienttshconnecté au cluster Teleport. - Disposer d'un hôte Linux compatible à intégrer
🔐 Vérifier vos accès au cluster Teleport
Connectez-vous à votre cluster Teleport avec la commande suivante :
tsh login --proxy=votreclusterteleport.example.com --user=votreuseridExemple avec un compte local
Si vous souhaitez vous connecter depuis un référentiel externe comme keycloak :
tsh login --proxy=teleport.example.com:443 --user=user@example.com --auth=keycloak-connectorVotre compte doit disposer des permissions suffisantes pour générer le token dont nous aurons besoin pour intégrer la machine à Teleport. Vous devrez donc pouvoir créer un token ainsi que des ressources de type node .
Plus de détails sur ce lien :

tsh login --proxy=teleport.example.com --user=email@example.com
tctl status
Cluster teleport.example.com
Version 16.4.6
CA pin sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678
Exécutez la commande tctl status pour vérifier que vous êtes bien connectés
🎫 Générer un token
Pour générer un token, la commande est la suivante :
tctl tokens add --ttl=60m --type=nodeLa durée de vie du token dépendra de votre cas d'usage. Si vous souhaitez automatiser l'intégration de ressources de Teleport sans avoir à renouveler régulièrement le token, vous pouvez lui donner une durée de vie plus importante.
La commande devrait vous renvoyer le contenu suivant :
❯ tctl tokens add --ttl=60m --type=node
The invite token: 20d410e050f27f059bcb23b1b8a206f1
This token will expire in 60 minutes.
Run this on the new node to join the cluster:
> teleport start \
--roles=node \
--token=20d410e050f27f059bcb23b1b8a206f1 \
--ca-pin=sha256:ac42bf8e06b62a3b07e1b757905b2260119bc6cee4ab3122f26612a8988dc944 \
--auth-server=10.42.4.43:3025
Please note:
- This invitation token will expire in 60 minutes
- 10.42.4.43:3025 must be reachable from the new nodeVous pouvez bien entendu simplement récupérer la commande et l'exécuter sur le noeud à enregistrer, mais si votre objectif est d'automatiser le processus d'enregistrement à Teleport de vos machines, vous n'aurez besoin que du token.
tctl tokens add --ttl=60m --type=node --format json | jq -r .tokenGénère un token, récupère le retour au format json et en extrait le token
🔧 Intégration de la ressource
📦 Déploiement des binaires
Teleport comprend un ensemble de binaire (en Go) à déployer sur la machine à intégrer. Un script automatique existe pour certains systèmes (Ubuntu par exemple), nous documenterons plutôt ici le déploiement de Teleport depuis un paquet (RPM/Deb).
La documentation inclus également plusieurs dépôts de paquets pour chaque distributions Linux (apt, yum, zypper, dnf).
Par exemple, pour Ubuntu, le repo est le suivant :
#/etc/apt/sources.list.d/teleport.list
deb [signed-by=/etc/apt/keyrings/teleport-archive-keyring.asc] https://apt.releases.teleport.dev/ubuntu noble stable/cloudLa liste des versions supportées est disponible dans la documentation officielle.

Vous pouvez également déployer l'agent GoTeleport depuis un paquet RPM/Deb, ou encore depuis l'archive tar.
Exemple pour un RPM
TELEPORT_PKG=teleport-ent
TELEPORT_VERSION=17.4.8
SYSTEM_ARCH="x86_64"
curl https://cdn.teleport.dev/${TELEPORT_PKG?}-${TELEPORT_VERSION?}-1.${SYSTEM_ARCH?}.rpm.sha256
curl -O https://cdn.teleport.dev/${TELEPORT_PKG?}-${TELEPORT_VERSION?}-1.${SYSTEM_ARCH?}.rpm
shasum --check -a 256 https://cdn.teleport.dev/${TELEPORT_PKG?}-${TELEPORT_VERSION?}-1.${SYSTEM_ARCH?}.rpm
sudo rpm -i https://cdn.teleport.dev/${TELEPORT_PKG?}-${TELEPORT_VERSION?}-1.${SYSTEM_ARCH?}.rpm
La mise à jour de l'agent peut être automatisée avec Teleport Update (que nous couvrirons dans un autre article), pour l'intégrer :
sudo teleport-update enable --proxy example.teleport.sh # enable Managed UpdatesLe paquet déploiera Teleport mais ne générera pas de fichier de configuration
rpm -ql teleport-ent-17.4.8-1.x86_64
/opt/teleport/system/bin/fdpass-teleport
/opt/teleport/system/bin/tbot
/opt/teleport/system/bin/tctl
/opt/teleport/system/bin/teleport
/opt/teleport/system/bin/teleport-update
/opt/teleport/system/bin/tsh
/opt/teleport/system/lib/systemd/system/teleport.service
/var/lib/teleport
/var/lib/teleport/versionsExemple sur une base SUSE, avec la paquet Enterprise. Le résultat est assez similaire dans la version communautaire.
⚙️ Configuration
Depuis le serveur à intégrer, vous pouvez générer une configuration type avec la commande teleport configure
Par exemple
teleport configure --proxy teleport.example.com --node-name yournode --token 20d410...1b8a206f1 --roles nodeCela vous générera un template de configuration que vous pourrez modifier et réutiliser à votre guise pour vos intégrations futures
version: v3
teleport:
nodename: yournode
data_dir: /var/lib/teleport
join_params:
token_name: 20d410e05....23b1b8a206f1
method: token
proxy_server: teleport.example.com:443
log:
output: stderr
severity: INFO
format:
output: text
ca_pin: ""
diag_addr: ""
auth_service:
enabled: "no"
ssh_service:
enabled: "yes"
proxy_service:
enabled: "no"
https_keypairs: []
https_keypairs_reload_interval: 0s
acme: {}
C'est également dans ce fichier que vous pourrez intégrer des labels dans la section SSH.
Ce fichier de configuration est utilisé par tous les services Teleport (serveur ou client), il se trouvera par défaut dans /etc/teleport.yaml .
Pour les autres options :

Ajouter l'option -o /etc/teleport.yaml pour écrire le fichier de configuration sur le serveur.
teleport configure --proxy teleport.example.com --node-name yournode --token 20d410...1b8a206f1 --roles node -o /etc/teleport.yamlSi vous avez utilisez un paquet pour déployer Teleport, le service est déjà présent. Pour l'archive il vous faudra copier le fichier teleport.service dans le bon répertoire, généralement /etc/systemd/system .
yourserver:~ # grep "ExecStart" /lib/systemd/system/teleport.service
ExecStart=/usr/local/bin/teleport start --config /etc/teleport.yaml --pid-file=/run/teleport.pidSi vous avez utilisé un package manager, le service devrait déjà être déployer et visible dans /lib/systemd/system/teleport.service .
🚀 Lancer le service
systemctl start teleportVous pouvez ensuite observer le démarrage avec la commande suivante
journalctl -u teleport -fSi tout se passe bien, les logs indiqueront
Jun 06 11:50:01 openbao-transit teleport[26395]: 2025-06-06T11:50:01.594+02:00 INFO [PROC:1] The process successfully wrote the credentials and state to the disk. pid:26395.1 identity:Node service/connect.go:508
Jun 06 11:50:01 openbao-transit teleport[26395]: 2025-06-06T11:50:01.694+02:00 INFO [NODE:1:CA] Cache "node" first init succeeded. cache/cache.go:1152
Jun 06 11:50:01 openbao-transit teleport[26395]: 2025-06-06T11:50:01.696+02:00 INFO [NODE:1] Service is starting in tunnel mode. pid:26395.1 service/service.go:3244
Jun 06 11:50:01 openbao-transit teleport[26395]: 2025-06-06T11:50:01.696+02:00 INFO [PROC:1] The new service has started successfully. Starting syncing rotation status. pid:26395.1 max_retry_period:4m16s service/connect.go:642Et voilà, votre serveur devrait remonter dans la console Teleport.