TL;DR — Kurzzusammenfassung

Vollständiger Leitfaden zu Gravitational Teleport für sicheres SSH, Kubernetes, Datenbanken und Apps. Zertifikate, SSO, RBAC, Audit-Logs und Access Requests.

Teleport von Gravitational ist eine Open-Source-Infrastrukturzugriffsplattform, die statische SSH-Schlüssel, VPNs und Jump Hosts durch kurzlebige Zertifikate, SSO und einen vollständigen Audit-Trail ersetzt. Dieser Leitfaden deckt jede Schicht ab: Architektur, Installation, Knoten-Einschreibung, RBAC, SSH, Datenbanken, Kubernetes und Anwendungszugriff.

Voraussetzungen

  • Linux-Server (Ubuntu 22.04+ oder RHEL 8+) mit öffentlichem FQDN für den Proxy Service.
  • DNS-A-Eintrag, der teleport.beispiel.com auf die Proxy-IP zeigt.
  • Port 443 (HTTPS/ALPN) eingehend zum Proxy geöffnet.
  • tsh- und tctl-CLIs auf der Arbeitsstation installiert.
  • Identitätsanbieter (GitHub, Okta, Azure AD oder Google Workspace) für SSO — optional für Laborzwecke.

Teleport-Architektur

KomponenteAufgabe
Auth ServiceZertifizierungsstelle. Stellt kurzlebige TLS/SSH-Zertifikate aus, speichert Audit-Logs.
Proxy ServiceÖffentlicher HTTPS/SSH-Reverse-Proxy. Verwaltet tsh-Logins, Web-UI und ALPN-Multiplexing auf Port 443.
SSH Node Agentteleport-Daemon auf jedem Server, zeichnet Sitzungen mit dem Auth Service auf.
Access AgentsSpezialisierte Daemons: db_service, kube_service, app_service, windows_desktop_service.

Zertifikatsbasierte Authentifizierung ersetzt SSH-Schlüssel. Wenn ein Benutzer sich mit tsh anmeldet, stellt der Auth Service ein SSH-Zertifikat aus, das für max_session_ttl (typischerweise 8–12 Stunden) gültig ist. Keine langlebigen privaten Schlüssel werden verteilt oder rotiert.


Installation

Selbst gehostet: apt/yum

# Ubuntu/Debian
curl https://goteleport.com/static/install.sh | bash -s 15.0.0
apt-get install teleport

# RHEL/Rocky Linux
yum install teleport

Kubernetes (Helm)

helm repo add teleport https://charts.releases.teleport.dev
helm install teleport-cluster teleport/teleport-cluster \
  --namespace teleport --create-namespace \
  --set clusterName=teleport.beispiel.com \
  --set acme=true \
  --set acmeEmail=admin@beispiel.com

Teleport Cloud

Verwalteter Proxy+Auth-Dienst. Nur Agents (SSH, DB, Kube) werden in der eigenen Infrastruktur deployt und mit dem Cloud-Tenant unter ihrUnternehmen.teleport.sh verbunden.


Erstkonfiguration und ACME-TLS

teleport configure \
  --cluster-name=teleport.beispiel.com \
  --public-addr=teleport.beispiel.com:443 \
  --acme \
  --acme-email=admin@beispiel.com \
  -o /etc/teleport/teleport.yaml

systemctl enable --now teleport

# Ersten Admin-Benutzer erstellen
tctl users add admin --roles=editor,access --logins=root,ubuntu

Knoten hinzufügen

Token-basierter Beitritt

# Kurzlebiges Token auf dem Auth-Server erstellen
tctl tokens add --type=node --ttl=5m

# Auf dem neuen Server
teleport start \
  --roles=node \
  --token=<token> \
  --auth-server=teleport.beispiel.com:443

EC2/IAM-Beitritt (AWS — Kein Token erforderlich)

Teleport verifiziert das AWS-Instanz-Identitätsdokument. Keine statischen Tokens erforderlich. Dasselbe Verfahren existiert für Azure Managed Identity und GCP Instance Identity.


Authentifizierung: SSO und MFA

GitHub-Connector

kind: github
version: v3
metadata:
  name: github
spec:
  client_id: "GITHUB_OAUTH_APP_ID"
  client_secret: "GITHUB_OAUTH_APP_SECRET"
  redirect_url: "https://teleport.beispiel.com/v1/webapi/github/callback"
  teams_to_roles:
    - organization: meine-org
      team: devops
      roles: ["devops"]

MFA erzwingen

kind: cluster_auth_preference
version: v2
metadata:
  name: cluster-auth-preference
spec:
  type: github
  second_factor: "on"
  webauthn:
    rp_id: "teleport.beispiel.com"

second_factor: "on" akzeptiert TOTP (Google Authenticator), WebAuthn (YubiKey, Touch ID) oder Passkeys.


RBAC: Rollen und Labels

kind: role
version: v7
metadata:
  name: devops
spec:
  options:
    max_session_ttl: "12h"
    record_session:
      default: "best_effort"
  allow:
    logins: ["ubuntu", "ec2-user"]
    node_labels:
      env: ["production", "staging"]
      team: ["devops"]
  deny:
    node_labels:
      restricted: ["true"]

Anwenden mit tctl create rolle.yaml. Der request-Block aktiviert Access Requests — Entwickler können temporären Produktionszugriff mit einer Genehmigung anfordern.


SSH-Zugriff mit tsh

# Anmeldung (öffnet Browser für SSO + MFA)
tsh login --proxy=teleport.beispiel.com

# Zugängliche Knoten auflisten
tsh ls

# Mit einem Knoten verbinden
tsh ssh ubuntu@web-server-01

# Dateiübertragung
tsh scp ./deploy.sh ubuntu@web-server-01:/tmp/

# Port-Weiterleitung
tsh ssh -L 5432:localhost:5432 ubuntu@db-server

# Befehl auf mehreren Knoten
tsh ssh --labels env=staging "systemctl restart nginx"

Sitzungsaufzeichnung ist automatisch. Wiedergabe über die Web-UI oder CLI:

tsh play <sitzungs-id>

Datenbankzugriff

tsh db login prod-postgres --db-user=appuser --db-name=meindb
tsh db connect prod-postgres   # öffnet psql
tsh db connect prod-mysql      # öffnet mysql CLI
tsh db connect mongo-atlas --db-user=leser
tsh db connect redis-cache

Teleport agiert als protokollbewusster Proxy — er versteht das native Datenbankprotokoll ohne dessen Ports zu exponieren.


Kubernetes-Zugriff

tsh kube ls
tsh kube login produktion
kubectl get pods -n default

Das Rollen-YAML definiert erlaubte Kubernetes-Ressourcen mit spezifischen Verben (get, list, exec). Impersonation wendet die Teleport-Benutzerberechtigungen auf den Kubernetes-Kontext an.


Anwendungszugriff

app_service:
  enabled: true
  apps:
    - name: grafana
      uri: http://grafana.intern:3000
      labels:
        env: production

Benutzer greifen auf https://grafana.teleport.beispiel.com zu. Teleport fügt einen JWT-Header mit der Benutzeridentität hinzu. SSO schützt jede interne App ohne Änderung.


Audit-Log

# Audit-Log abfragen
tctl audit events --event-type=session.start --format=json

# Datumsbereich
tctl audit events \
  --from="2026-03-01" \
  --to="2026-03-23" \
  --event-type=db.session.query

Speicher-Backends: S3 (mit Athena), GCS (mit BigQuery) oder DynamoDB.


Access Requests: Just-in-Time-Rechteerweiterung

# Produktionsrolle anfordern
tsh request create --roles=production-access \
  --reason="Untersuchung P1-Vorfall #4821"

# Genehmigen
tsh request review --approve <anfrage-id>

# Ablehnen
tsh request review --deny <anfrage-id>

Teleport enthält Plugins für Slack, PagerDuty, ServiceNow und Jira. Genehmigungen können direkt aus Slack vorgenommen werden.


Teleport vs. Alternativen

FunktionTeleportHashiCorp BoundaryStrongDMBastion HostTailscale SSHOpenSSH
AuthentifizierungKurzlebige ZertifikateDynamische CredentialsCredential-InjektionStatische SchlüsselWireGuard + ZertifikateStatische Schlüssel
SSO/IdPJa (SAML/OIDC/GitHub)JaJaManuellOIDCNein
SitzungsaufzeichnungVollständig (SSH+DB+K8s)NeinJaNeinNeinNein
DB-ZugriffJa (natives Protokoll)JaJaNur TunnelNeinNein
KubernetesJa (RBAC)TeilweiseJaNeinNeinNein
Access RequestsJa (integriert)NeinNeinNeinNeinNein
Open SourceJa (Apache 2.0)Ja (MPL 2.0)Nein (SaaS)N/ATeilweiseJa

Fallstricke und Sonderfälle

  • Zeitversatz zerstört Zertifikate. Auth, Proxy und alle Knoten benötigen NTP-Synchronisation innerhalb von ±30 Sekunden.
  • ALPN-Multiplexing erfordert Port 443. Das Aufteilen von Ports bricht einige Proxy-zu-Proxy-Funktionen.
  • Wildcard-TLS für App-Zugriff. Anwendungs-Subdomains erfordern ein Wildcard-Zertifikat oder eine ACME-Herausforderung pro App.
  • EC2 IAM Join benötigt IMDSv2. Sicherstellen, dass der Instanz-Metadaten-Endpunkt erreichbar ist.
  • Kubernetes-Impersonation. Der kube_service-Agent benötigt ClusterRole-Impersonate-Berechtigungen.

Fehlerbehebung

ProblemLösung
Weiterleitungsschleife bei tsh loginPrüfen, ob redirect_url des SSO-Connectors exakt mit der öffentlichen Proxy-Adresse übereinstimmt
Knoten erscheinen nicht in tsh lsPrüfen, ob der Agent den Auth auf Port 443 erreicht; Join-Token-Ablauf prüfen
Datenbankverbindung verweigertBestätigen, dass db_service läuft; Firewall zwischen Agent und DB-Host prüfen
kubectl exec verbotenVerb exec zum kubernetes_resources-Block der Rolle hinzufügen
Sitzung nicht aufgezeichnetrecord_session-Richtlinie prüfen; S3-Bucket-Berechtigungen für die IAM-Rolle des Auth Service prüfen

Zusammenfassung

  • Zertifizierungsstelle — ersetzt statische SSH-Schlüssel durch automatisch ablaufende Zertifikate.
  • SSO + MFA — GitHub, Okta, Azure AD, Google Workspace; TOTP, WebAuthn, Hardware-Schlüssel.
  • RBAC mit Knoten-Labels — Rollen entsprechen Servern nach Umgebungs-/Team-Tags.
  • Vollständiges Audit — jede Sitzung als strukturierte Ereignisse + Video aufgezeichnet, in S3/GCS gespeichert.
  • Datenbanken und Kubernetes — protokollbewusstes Proxying ohne Port-Exposition oder Credential-Verteilung.
  • Access Requests — Just-in-Time-Rechteerweiterung mit Slack/PagerDuty-Genehmigungsworkflows.
  • Open Source — Apache 2.0, selbst hostbar oder verwaltet über Teleport Cloud.

Verwandte Artikel