
In un contesto in cui la sicurezza e la gestione centralizzata degli accessi ai server sono sempre più cruciali, Teleport si afferma come una soluzione moderna e potente per l’accesso sicuro alle infrastrutture.
Basato su un’architettura Zero Trust, Teleport consente di gestire connessioni SSH, Kubernetes, database, applicazioni interne e desktop remoti attraverso un’unica piattaforma, riducendo la complessità e aumentando la visibilità sulle attività degli utenti.
In questo articolo vedremo come installare e configurare Teleport su Ubuntu Server 24.04, partendo da un’installazione pulita fino alla creazione del primo utente amministratore e all’accesso alla Web UI.
L’obiettivo è ottenere un setup funzionale e sicuro, pronto per essere esteso in ambienti di produzione o laboratori di test.
Che tu stia cercando un’alternativa moderna a jump host SSH o voglia sperimentare una piattaforma di accesso centralizzato, questa guida ti accompagnerà passo dopo passo nella configurazione base di Teleport su una delle distribuzioni Linux più diffuse.
PREREQUISITI
- Sistema operativo: Ubuntu Server 24.04 LTS (64 bit)
- Privilegi: accesso con utente root o sudo
- Connessione Internet: necessaria per scaricare i pacchetti e (facoltativamente) generare certificati HTTPS con Let’s Encrypt
- Spazio su disco: minimo 200 MB per binari e configurazioni, consigliati 2 GB+ per log e dati (/var/lib/teleport)
- RAM minima: 512 MB (consigliato almeno 1 GB)
- CPU: 1 core minimo (2 o più consigliati per cluster o proxy attivi)
AGGIORNAMENTO DEL SISTEMA
Apri il terminale ed eseguire:
|
0 |
sudo apt update && sudo apt upgrade -y
|
Installare qualche strumento utile con il comando:
|
0 |
sudo apt install -y curl wget gnupg lsb-release
|
AGGIUNTA DEL REPOSITORY DI TELEPORT
Importare la chiave pubblica GPG del repository Teleport con i seguenti comandi:
|
0
1
2
|
sudo mkdir -p /etc/apt/keyrings
curl https://deb.releases.teleport.dev/teleport-pubkey.asc | sudo tee /etc/apt/keyrings/teleport.asc >/dev/null
|
Assicurarsi che il file sia leggibile con il comando:
|
0 |
sudo chmod 644 /etc/apt/keyrings/teleport.asc
|
Aggiungere il repository con il comando:
|
0
1
|
echo "deb [signed-by=/etc/apt/keyrings/teleport.asc] https://deb.releases.teleport.dev/ stable main" | \
sudo tee /etc/apt/sources.list.d/teleport.list
|
Aggiornare il repository apt con il comando:
|
0 |
sudo apt-get update
|
INSTALLAZIONE DI TELEPORT
Installare Teleport utilizzando il comando seguente:
|
0 |
sudo apt install -y teleport
|
ATTENZIONE: durante la stesura del seguente articolo l’ultima versione disponibile di Teleport è la 14.3.3
Per fare il check della versione installata di Teleport eseguire il comando:
|
0 |
teleport version
|
Dovremmo visualizzare un output simile al seguente:
|
0 |
Teleport v14.3.3 git:v14.3.3-0-g542fbb0 go1.21.6
|
CONFIGURAZIONE DI TELEPORT
La prima cosa da fare è generare il file di configurazione con il comando:
|
0 |
sudo teleport configure > /tmp/teleport.yaml
|
Quindi spostarlo nella posizione corretta assegnando le ACL giuste con i comandi:
|
0
1
2
|
sudo mv /tmp/teleport.yaml /etc/teleport.yaml
sudo chown root:root /etc/teleport.yaml
sudo chmod 600 /etc/teleport.yaml
|
Fare una configurazione base di Teleport editando il file teleport.yaml con il comando:
|
0 |
sudo nano /etc/teleport.yaml
|
Se è tutto OK dovremmo visualizzare il seguente contenuto:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#
# A Sample Teleport configuration file.
#
# Things to update:
# 1. license.pem: Retrieve a license from your Teleport account https://teleport.sh
# if you are an Enterprise customer.
#
version: v3
teleport:
nodename: SERVER-TELEPORT
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
ssh_service:
enabled: "yes"
commands:
- name: hostname
command: [hostname]
period: 1m0s
proxy_service:
enabled: "yes"
https_keypairs: []
https_keypairs_reload_interval: 0s
acme: {}
|
Di seguito una breve spiegazione delle sezioni del file:
teleport: → configurazione generale (nome del nodo, log, data directory)
auth_service: → gestisce autenticazione e utenti
proxy_service: → espone interfaccia web/API per accessi da fuori
ssh_service: → permette di collegarsi come SSH node
Aggiungere solo le seguenti righe nella sezione proxy_service:
|
0
1
2
3
4
5
6
|
proxy_service:
enabled: "yes"
web_listen_addr: 0.0.0.0:3080
public_addr: ["IP-SERVER-TELEPORT-O-FQDN:3080"]
https_keypairs: []
https_keypairs_reload_interval: 0s
acme: {}
|
Salvare e chiudere il file di configurazione
ABILITARE E AVVIARE IL SERVIZIO TELEPORT
Teleport viene gestito con systemd quindi è possibile abilitare l’avvio automatico con il comando:
|
0 |
sudo systemctl enable teleport
|
Avviare il servizio con il comando:
|
0 |
sudo systemctl start teleport
|
Verificare lo stato di teleport con il comando:
|
0 |
sudo systemctl status teleport
|
Se è tutto OK dovremmo visualizzare il seguente output:
|
0
1
2
3
4
5
6
7
8
|
● teleport.service - Teleport Service
Loaded: loaded (/usr/lib/systemd/system/teleport.service; enabled; preset: enabled)
Active: active (running) since Thu 2025-11-06 09:51:22 CET; 2min 10s ago
Main PID: 14529 (teleport)
Tasks: 14 (limit: 979)
Memory: 64.7M (peak: 81.5M)
CPU: 7.978s
CGroup: /system.slice/teleport.service
└─14529 /usr/local/bin/teleport start --config /etc/teleport.yaml --pid-file=/run/teleport.pid
|
CREAZIONE DI UN UTENTE AMMINISTRATORE
Teleport ha un utente amministratore che si crea con un comando che genera un link d’invito.
Eseguire il comando:
|
0 |
sudo tctl users add admin --roles=access,editor,admin
|
NOTA BENE: sostituire admin con il nome che si desidera utilizzare
Dovremmo visualizzare un output simile al seguente:
|
0
1
|
User "admin" has been created but requires a password. Share this URL with the user to complete user setup, link is valid for 1h:
https://SERVER-TELEPORT:3080/web/invite/a678fb094a9f537c66f92ee7d78bd8fe
|
Da un qualsiasi browser richiamare il link:
https://SERVER-TELEPORT:3080/web/invite/a678fb094a9f537c66f92ee7d78bd8fe
Cliccare su Get Started
Inserire la password per l’utente amministratore quindi cliccare Next
Fare la configurazione OTP quindi cliccare Submit
Cliccare su Go To Cluster
UPGRADE DI TELEPORT
Teleport non supporta aggiornamenti automatici o via interfaccia web (nemmeno nella versione Enterprise)
La Web UI mostra solo l’avviso di sicurezza, ma l’upgrade va fatto da riga di comando sul server.
Controllare la versione di Teleport con il comando:
|
0 |
teleport version
|
Dovremmo visualizzare il seguente output:
|
0 |
Teleport v14.3.3 git:v14.3.3-0-g542fbb0 go1.21.6
|
Aggiornare teleport con il comando:
|
0 |
sudo apt install --only-upgrade teleport
|
Al termine dell’aggiornamento collegarsi di nuovo alla Web UI
Se è andato tutto a buon fine non dovremmo visualizzare la barra rossa in alto
CONFIGURAZIONE DI NGINX COME REVERSE PROXY
Installare Nginx e OpenSSL con i seguenti comandi:
|
0
1
|
sudo apt update
sudo apt install -y nginx openssl
|
Quindi generare il certificato autofirmato.
Creare una directory per conservarlo con il comando:
|
0 |
sudo mkdir -p /etc/ssl/teleport
|
Generare la chiave privata e il certificato X.509 (validità 1 anno, modificabile):
|
0
1
2
3
|
sudo openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/ssl/teleport/teleport.key \
-out /etc/ssl/teleport/teleport.crt
|
Dovremmo visualizzare il seguente output:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
....+......+.+........+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*........+.......+...+..............+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*..........+.....+...+.........+.+..+....+.........+..+....+........+...+.......+......+......+.....+.+.....+.......+...........+.+...+..+................+..+.+.................+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*..+..........+......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*..+..........+.....+............+............+...+.......+...+............+......+.....+.........+...+.......+.....+...+...+............+.+......+...+...+.........+......+.........+.....+................+...+...........+...+.+..+.......+...........+.+......+...+.....+......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:IT
State or Province Name (full name) [Some-State]:Italy
Locality Name (eg, city) []:Turin
Organization Name (eg, company) [Internet Widgits Pty Ltd]:LAB TEST
Organizational Unit Name (eg, section) []:LAB TEST
Common Name (e.g. server FQDN or YOUR name) []:SERVER-TELEPORT.test.lab
Email Address []:admin@test.lab
|
ATTENZIONE: Durante la procedura ti verrà chiesto di compilare i campi:
Common Name (CN) → inserire l’hostname o l’IP che userai (es. SERVER-TELEPORT.test.lab o 192.168.0.25). Gli altri campi (country, org, ecc.) è possibile lasciarli vuoti o simbolici.
Assegnare i permessi con i comandi:
|
0
1
|
sudo chmod 600 /etc/ssl/teleport/teleport.key
sudo chmod 644 /etc/ssl/teleport/teleport.crt
|
Configurare Nginx come reverse proxy per Teleport
Creare il file di configurazione con il comando:
|
0 |
sudo nano /etc/nginx/sites-available/teleport.conf
|
Copiare all’interno il seguente output:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
server {
listen 80;
server_name SERVER-TELEPORT.test.lab;
# Redirect automatico a HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name SERVER-TELEPORT.test.lab;
ssl_certificate /etc/ssl/teleport/teleport.crt;
ssl_certificate_key /etc/ssl/teleport/teleport.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Reverse proxy verso Teleport (porta interna 3080)
location / {
proxy_pass https://127.0.0.1:3080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Necessario per sessioni SSH via web (WebSocket)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Disabilita verifica certificato interno di Teleport
proxy_ssl_verify off;
}
}
|
Salvare e chiudere il file di configurazione.
Abilita la configurazione e riavvia Nginx con i seguenti comandi:
|
0
1
2
|
sudo ln -s /etc/nginx/sites-available/teleport.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
|
Aggiornare Teleport per lavorare dietro Nginx modificando /etc/teleport.yaml con il comando:
|
0 |
sudo nano /etc/teleport.yaml
|
Trovare la sezione proxy_service e impostarla cosi:
|
0
1
2
3
4
5
6
|
proxy_service:
enabled: "yes"
web_listen_addr: 127.0.0.1:3080
public_addr: ["SERVER-TELEPORT.test.lab:443"]
https_keypairs: []
https_keypairs_reload_interval: 0s
acme: {}
|
Salvare e chiudere il file di configurazione
Riavviare Teleport con il comando:
|
0 |
sudo systemctl restart teleport
|
A questo punto da un qualsiasi browser richiamare il seguente link:
https://SERVER-TELEPORT.test.lab
Dovremmo poter raggiungere la pagina di Login di Teleport
CONSIDERAZIONI FINALI
Teleport è una piattaforma open source per la gestione centralizzata e sicura degli accessi a server, container, database, applicazioni web interne e desktop remoti.
Offre un approccio Zero Trust basato su certificati a tempo (short-lived certificates) invece di chiavi statiche o password e fornisce un’unica interfaccia web e CLI (tsh) per autenticarsi e accedere alle risorse.
✅ Pro – Vantaggi di Teleport
1. Sicurezza moderna (Zero Trust)
- Usa certificati temporanei anziché chiavi SSH permanenti.
- Gestisce automaticamente rotazione delle chiavi, scadenze, e revoca in tempo reale.
- Supporta MFA, SSO (SAML, OIDC, Okta, LDAP) e approvazioni d’accesso con workflow.
- Riduce enormemente il rischio di credenziali compromesse.
2. Accesso centralizzato e unificato
- Un unico portale web per accedere a SSH, Kubernetes, database (MySQL, PostgreSQL, MongoDB, etc.), e app interne.
- Integrazione trasparente con i tool esistenti (SSH, kubectl, psql, mysql, ecc.).
- Gestione centralizzata di utenti, ruoli, e audit trail.
3. Audit e tracciabilità completi
- Registra tutte le sessioni SSH e comandi (anche replay video).
- Genera eventi audit consultabili da CLI o dashboard.
- Integrazione con SIEM esterni (Elastic, Splunk, Grafana, Datadog, ecc.).
- Perfetto per contesti regolamentati (ISO 27001, SOC 2, GDPR).
4. Facilità d’uso e automazione
- Configurazione semplice (YAML + CLI tctl / tsh).
- Possibilità di join automatico dei nodi tramite token o provisioning.
- Aggiornamenti regolari e documentazione chiara.
- Disponibilità di pacchetti APT, Helm, Docker e binari per diverse piattaforme.
5. Flessibilità architetturale
Puoi usare Teleport come:
- tutto-in-uno (Auth + Proxy + Node su una macchina), oppure
- cluster distribuito (Auth, Proxy, Nodes separati).
- Funziona on-premise, in cloud o in ambienti ibridi.
- Supporta autenticazione hardware (YubiKey, WebAuthn).
6. Versione open source potente
- La Community Edition (OSS) include quasi tutte le funzionalità core.
- La versione Enterprise aggiunge solo features avanzate (RBAC granulari, moduli di accesso, supporto commerciale, etc.).
❌ Contro – Limiti e svantaggi
1. Curva di apprendimento
- L’approccio Zero Trust e i concetti come “Auth Service”, “Proxy Service”, “Roles”, “Connectors” richiedono un po’ di tempo per essere compresi.
- Non è plug-and-play come un jump server SSH tradizionale.
2. Configurazione iniziale più complessa
- Il file /etc/teleport.yaml è molto potente ma anche sensibile alla sintassi.
- Piccoli errori (indentazione, duplicati) possono bloccare il servizio.
- Dietro proxy o firewall serve attenzione nella gestione delle porte.
3. Aggiornamenti manuali
- Gli aggiornamenti vanno eseguiti da CLI (apt o binario), non dalla Web UI.
- In cluster grandi, è necessario aggiornare prima Auth, poi Proxy, poi Nodes quindi serve un piano di upgrade coordinato.
4. Limitazioni dell’edizione Community
- Alcune funzionalità avanzate (Audit remoto, Access Requests approvabili via Slack/Jira, Device Trust, FIPS mode, ecc.) sono solo nella versione Enterprise.
- Nessuna interfaccia di gestione utenti grafica (tutto via CLI o API).
5. Richiede un’infrastruttura dedicata minima
Non è pensato per ambienti estremamente piccoli o server singoli casalinghi: l’architettura (Auth + Proxy) ha senso soprattutto in team o contesti multi-server.
Considerazione finale
Teleport è una soluzione eccellente per team DevOps, aziende e ambienti cloud che vogliono sicurezza forte, controllo centralizzato e visibilità completa sugli accessi.
Richiede però un po’ di pratica iniziale e manutenzione consapevole.

0 commenti