Cos'è SSH? | Protocollo Secure Shell (SSH)

Il protocollo Secure Shell (SSH) imposta connessioni crittografate remote tra computer. Abilita anche il tunneling.

Obiettivi di apprendimento

Dopo aver letto questo articolo sarai in grado di:

  • Definire il protocollo Secure Shell (SSH)
  • Descrivere il funzionamento di SSH e cosa lo rende sicuro
  • Comprendere il tunneling SSH
  • Spiegare i rischi per la sicurezza di SSH

Argomenti correlati


Vuoi saperne di più?

Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.

Fai riferimento all'Informativa sulla privacy di Cloudflare per scoprire come raccogliamo ed elaboriamo i tuoi dati personali.

Copia link dell'articolo

Cos'è il protocollo Secure Shell (SSH)?

Il protocollo Secure Shell (SSH) è un metodo che consente di inviare comandi in modo sicuro a un computer su una rete non protetta. SSH utilizza la crittografia per autenticare e crittografare le connessioni tra dispositivi. SSH consente anche il tunneling, o port forwarding, ovvero quando i pacchetti di dati sono in grado di transitare in reti su cui altrimenti non sarebbero in grado di transitare. SSH viene spesso utilizzato per controllare i server da remoto, per la gestione dell'infrastruttura e per il trasferimento di file.

Durante le trasferte, il proprietario di un negozio potrebbe impartire ai propri dipendenti istruzioni da remoto per garantire che il negozio venga gestito senza intoppi mentre è via. Allo stesso modo, SSH consente agli amministratori di gestire server e dispositivi da remoto. I vecchi protocolli di gestione remota come Telnet trasportavano i comandi degli amministratori in una forma che poteva essere vista da chiunque. (Immagina se i dipendenti mettessero il proprietario del negozio in vivavoce durante una chiamata; tutti i clienti nel negozio potrebbero ascoltare istruzioni private). A differenza di Telnet, SSH è sicuro: proprio per questo motivo si chiama "Secure Shell".

Report
Report Security Signals 2026

Cosa fa SSH?

Connessioni crittografate remote: SSH imposta una connessione tra il dispositivo di un utente e una macchina remota, spesso un server. Utilizza la crittografia per codificare i dati che transitano nella connessione. Una parte che intercetta potrebbe trovare solo qualcosa di simile a dati statici, casuali che non significano nulla a meno che non vengano decrittografati. (SSH utilizza metodi di crittografia che rendono la decrittografia estremamente complessa per gli estranei).

Capacità di tunneling: nella connettività di rete, il tunneling è un metodo per spostare pacchetti attraverso una rete utilizzando un protocollo o un percorso che normalmente non sarebbero in grado di utilizzare. Il tunneling funziona avvolgendo i pacchetti di dati* con informazioni aggiuntive, chiamate intestazioni, per cambiarne la destinazione. I tunnel SSH utilizzano una tecnica chiamata port forwarding per inviare pacchetti da una macchina all'altra. Il port forwarding SSH è spiegato più dettagliatamente di seguito.

*Tutti i dati che transitano in una rete vengono suddivisi in blocchi più piccoli; tali blocchi sono chiamati "pacchetti".

Registrati
Sicurezza e velocità con qualsiasi piano Cloudflare

Come funziona SSH?

TCP/IP

SSH viene eseguito sulla suite di protocolli TCP/IP, su cui si basa gran parte di Internet. TCP/IP trasporta e consegna pacchetti di dati. L'uso del TCP è uno dei modi in cui SSH si differenzia dagli altri protocolli di tunneling, alcuni dei quali utilizzano invece il più veloce ma meno affidabile UDP.

Crittografia a chiave pubblica

SSH è "sicuro" perché incorpora la crittografia e l'autenticazione tramite un processo chiamato crittografia a chiave pubblica. La crittografia a chiave pubblica è un metodo che consente di crittografare (o firmare) i dati con due chiavi diverse. Una delle chiavi, la chiave pubblica, è disponibile per l'uso da parte di chiunque. L'altra chiave, la chiave privata, è tenuta segreta dal suo proprietario. Poiché le due chiavi corrispondono tra loro, stabilire l'identità del proprietario della chiave richiede il possesso della chiave privata che accompagna la chiave pubblica.

Queste chiavi "asimmetriche", così chiamate perché hanno valori diversi, consentono anche ai due lati della connessione di negoziare chiavi simmetriche identiche e condivise per un'ulteriore crittografia sul canale. Una volta completata questa negoziazione, le due parti utilizzano le chiavi simmetriche per crittografare i dati che si scambiano.

In una connessione SSH, entrambe le parti hanno una coppia di chiavi pubbliche/private e ciascuna parte autentica l'altra utilizzando queste chiavi. Ciò differenzia SSH da HTTPS, che nella maggior parte delle implementazioni verifica solo l'identità del server Web in una connessione client-server. (Tra le altre differenze, HTTPS di solito non consente al client di accedere alla riga di comando del server e il firewall a volte blocca SSH ma quasi mai blocca HTTPS).

Autenticazione

Mentre la crittografia a chiave pubblica autentica i dispositivi connessi in SSH, un computer adeguatamente protetto richiederà comunque l'autenticazione della persona che utilizza SSH. Spesso questo avviene tramite l'immissione di un nome utente e una password.

Una volta completata l'autenticazione, la persona può eseguire i comandi sulla macchina remota come se lo stesse facendo sulla propria macchina locale.

Port forwarding SSH o "tunneling"

Il port forwarding è come inoltrare un messaggio tra due persone. Roberto può inviare un messaggio ad Alice, che a sua volta lo trasmette a Davide. Allo stesso modo, il port forwarding invia un pacchetto diretto a un indirizzo IP e una porta su una macchina a un indirizzo IP e una porta su una macchina diversa.

Ad esempio, immagina che un amministratore voglia apportare una modifica a un server all'interno di una rete privata che gestisce e che voglia farlo da remoto. Tuttavia, per motivi di sicurezza, quel server riceve pacchetti solo da altri computer all'interno della rete privata. L'amministratore potrebbe invece connettersi a un secondo server all'interno della rete, aperto alla ricezione del traffico Internet, e quindi utilizzare il port forwarding SSH per connettersi al primo server. Dal punto di vista del primo server, i pacchetti di dati dell'amministratore provengono dall'interno della rete privata.

Utilizzo di SSH

I sistemi operativi Linux e Mac sono dotati di SSH integrato. Nelle macchine Windows, invece, è possibile che sia necessario installare un'applicazione client SSH. Sui computer Mac e Linux, gli utenti possono aprire l'applicazione Terminale e immettere direttamente i comandi SSH.

A cosa serve SSH?

Tecnicamente, SSH può trasmettere qualsiasi dato arbitrario su una rete e il tunneling SSH può essere impostato per una miriade di scopi. Tuttavia, i casi d'uso SSH più comuni sono:

  • Gestione remota di server, infrastrutture e computer dei dipendenti
  • Trasferimento sicuro dei file (SSH è più sicuro dei protocolli non crittografati come FTP)
  • Accesso ai servizi nel cloud senza esporre le porte di una macchina locale a Internet
  • Connessione remota ai servizi in una rete privata
  • Elusione delle restrizioni del firewall

Qual è la porta SSH?

La porta 22 è la porta predefinita per SSH. A volte, il firewall può bloccare l'accesso a determinate porte sui server dietro il firewall, ma lasciare la porta 22 aperta. SSH è quindi utile per accedere ai server sull'altro lato del firewall: i pacchetti diretti alla porta 22 non vengono bloccati e possono quindi essere inoltrati a qualsiasi altra porta.

Esistono rischi per la sicurezza associati a SSH?

Poiché l'accesso SSH solitamente prevede privilegi elevati, come la possibilità di installare applicazioni su un server o di eliminare, modificare o estrarre dati, l'accesso SSH può rivelarsi dannoso nelle mani di un malintenzionato o persino di un utente interno ben intenzionato. SSH è stato utilizzato in numerosi attacchi documentati per esfiltrare dati privati, aprire percorsi backdoor in una rete sicura e ottenere l'accesso root sui server.

SSH può anche passare attraverso i firewall che lasciano la porta 22 sbloccata (come fanno molti), consentendo ai malintenzionati di intrufolarsi all'interno di reti sicure.

Gli autori degli attacchi possono anche sottrarre chiavi SSH per accedere a computer e server privati. In effetti, la gestione delle chiavi SSH è un grave problema di sicurezza per le grandi organizzazioni, poiché i loro numerosi server possono utilizzare migliaia o addirittura milioni di chiavi e il monitoraggio e l'aggiornamento di tutte le chiavi è quasi impossibile. Le chiavi SSH non scadono a meno che non vengano esplicitamente revocate, quindi una volta che un malintenzionato ottiene una chiave, potrebbe avere un accesso continuo per mesi o anni.

In che modo SSH è in contrasto con altri protocolli per il tunneling?

Una delle principali differenze tra SSH e altri protocolli di tunneling è il livello OSI in base a cui operano. GRE, IP-in-IP e IPSec sono tutti protocolli a livello di rete. In quanto tali, non sono a conoscenza delle porte (un concetto a livello di trasporto), ma operano tra indirizzi IP. L'esatto livello OSI di SSH non è definito rigorosamente, ma la maggior parte delle fonti lo descrive come un protocollo di livello 7/livello applicazione, come HTTP, FTP e SMTP.

Un'altra differenza è l'uso di TCP da parte di SSH. TCP, come descritto sopra, è un protocollo a livello di trasporto e uno dei principali utilizzati su Internet. Un altro protocollo a livello di trasporto ampiamente utilizzato è UDP (User Datagram Protocol). UDP è un protocollo di trasporto "best-effort": l'invio di pacchetti senza garantirne la distribuzione, il che lo rende più veloce ma a volte causa una perdita di pacchetti. Sebbene TCP sia più lento di UDP, garantisce la distribuzione di tutti i pacchetti secondo l'ordine previsto ed è quindi più affidabile.

IPSec utilizza esclusivamente UDP invece di TCP per consentire ai pacchetti IPSec di transitare nel firewall. Pertanto, i tunnel IPSec sono in genere più veloci dei tunnel SSH, ma possono perdere pacchetti in transito. GRE e IP-in-IP possono essere utilizzati con TCP o UDP.

Infine, SSH crittografa solo un'applicazione alla volta, non tutto il traffico da e verso un dispositivo. Ciò differenzia SSH da IPSec, che crittografa tutto il traffico di rete, indipendentemente dall'applicazione da cui proviene. Per questo motivo, SSH non viene utilizzato per configurare le VPN.

In che modo Cloudflare rende SSH più sicuro?

Sebbene SSH comporti rischi per la sicurezza, molte organizzazioni fanno affidamento su di esso per rimanere produttive. Per mitigare questi rischi, Cloudflare offre SSH con Access for Infrastructure come parte della sua piattaforma SASE. Questo servizio applica i concetti Zero Trust a SSH, offrendo alle organizzazioni un controllo granulare su come gli utenti possono connettersi ai propri server SSH. Limita ciò che un utente può fare, riducendo l'impatto dell'utilizzo di SSH non autorizzato da parte di un autore di attacchi o di un insider.

SSH con Access for Infrastructure elimina anche la necessità di gestire le chiavi SSH (una problematica enorme, come descritto sopra). Le organizzazioni possono invece utilizzare certificati SSH di breve durata emessi da un'autorità di certificazione (CA) gestita da Cloudflare.

Cloudflare consente inoltre alle organizzazioni di monitorare e registrare l'accesso e l'utilizzo di SSH, il che è essenziale sia per il ripristino degli incidenti che per la conformità normativa.

Scopri di più su SSH con Access for Infrastructure.

DOMANDE FREQUENTI

Cos'è SSH?

SSH (Secure Shell) è un protocollo di rete che stabilisce connessioni crittografate tra computer per un accesso remoto sicuro. Funziona sulla porta TCP 22 e fornisce autenticazione, crittografia e integrità per proteggere i dati trasmessi su reti non protette.

In che modo le chiavi SSH autenticano gli utenti?

Le chiavi SSH autenticano gli utenti attraverso la crittografia asimmetrica con una coppia di chiavi pubblica-privata anziché con password tradizionali. La chiave privata rimane sul sistema del client mentre la chiave pubblica risiede sul server, consentendo un'autenticazione sicura senza trasmettere le credenziali effettive sulla rete.

Quali sono i vantaggi del tunneling SSH?

Il tunneling SSH crea una connessione sicura attraverso la quale possono passare altri dati, crittografando efficacemente il traffico non crittografato. Ciò consente un port forwarding sicuro e protegge le informazioni sensibili dall'intercettazione durante la trasmissione.

In cosa differisce SSH rispetto a Telnet?

Telnet trasmette i dati in testo semplice. SSH crittografa tutte le comunicazioni per prevenire intercettazioni e attacchi sul percorso. SSH ha effettivamente sostituito Telnet come standard per l'accesso remoto al server grazie alle sue funzionalità di sicurezza superiori.

Quali tipi di chiavi SSH vengono comunemente utilizzati?

I tipi di chiavi SSH comuni includono RSA, ECDSA ed EdDSA, che offrono diversi livelli di sicurezza e prestazioni. Ed25519, una versione dello schema di firma EdDSA che utilizza una curva ellittica, sta diventando sempre più popolare perché garantisce una sicurezza elevata con lunghezze di chiave più brevi e operazioni più rapide.

Informazioni sulla gestione degli accessi