Cos'è SSH?
Descrizione del Secure Shell (SSH) per la gestione remota del server.
SSH («Secure Shell») è un protocollo di rete a livello applicativo che consente la gestione remota di un sistema operativo e il trasferimento sicuro di file. Cifra tutto il traffico — comprese le password — risultando notevolmente più sicuro di protocolli più datati come Telnet e rlogin. SSH supporta una vasta gamma di algoritmi di cifratura ed è disponibile per praticamente tutti i principali sistemi operativi.
SSH può incapsulare altri protocolli di rete attraverso un canale non sicuro, offrendo accesso remoto alla riga di comando di un computer, nonché la trasmissione cifrata di flussi audio o video. Ciò avviene tramite il port forwarding (tunneling TCP). SSH supporta inoltre la compressione dei dati prima della cifratura, particolarmente utile quando si eseguono client X Window System remoti su connessioni lente.
Storia e sviluppo di SSH
La prima versione del protocollo, SSH-1, fu creata nel 1995 dal ricercatore finlandese Tatu Ylönen presso l'Università di Tecnologia di Helsinki. SSH-1 fu progettato per garantire una riservatezza superiore rispetto a rlogin, Telnet e rsh. Nel 1996 fu sviluppata una versione più sicura e incompatibile con la precedente — SSH-2. Il protocollo si diffuse rapidamente, raggiungendo circa due milioni di utenti entro il 2000.
Nel 2006 il protocollo SSH fu standardizzato dall'IETF come standard Internet. Tuttavia, ancora oggi alcuni Paesi richiedono autorizzazioni speciali per l'utilizzo di determinati metodi di cifratura avanzata, inclusi alcuni impiegati in SSH.
Le implementazioni moderne (tra cui OpenSSH dal ~2017) hanno eliminato completamente il supporto per SSH-1. Praticamente tutto l'utilizzo attuale si basa su SSH-2.
Implementazioni di SSH
Esistono due principali categorie di implementazioni SSH: commerciali proprietarie e libere open source. L'implementazione open source più diffusa è OpenSSH. A metà degli anni 2000 era già presente su circa l'80% dei computer connessi a Internet; oggi rimane l'implementazione SSH dominante a livello mondiale (inclusa per impostazione predefinita in quasi tutte le distribuzioni Linux, macOS, e disponibile per Windows). L'implementazione commerciale originale è sviluppata da SSH Communications Security (già SSH Inc.) con il nome di prodotto Tectia SSH (in precedenza SSH Tectia / SSH Secure Shell). È una soluzione enterprise a pagamento, spesso scelta in settori regolamentati (bancario, governativo, infrastrutture critiche) per caratteristiche quali la certificazione FIPS 140-2/3, le opzioni di crittografia post-quantistica, le edizioni zero-trust, la gestione centralizzata e il supporto commerciale 24 ore su 24, 7 giorni su 7. È ancora attivamente sviluppata e aggiornata nel 2025–2026.
Sicurezza di SSH
SSH-2 è resistente agli attacchi man-in-the-middle (MITM) — a differenza di Telnet, dove lo sniffing del traffico rivela tutto. Se configurato correttamente, protegge anche dal session hijacking e dagli attacchi di DNS spoofing.
Raccomandazioni aggiornate (2025–2026):
- Utilizzare chiavi Ed25519 o ECDSA al posto del vecchio RSA-SHA1.
- Preferire rsa-sha2-256/512 per le chiavi RSA.
- Disabilitare gli algoritmi deboli o deprecati (ad es. SHA-1, DSA, vecchi metodi di scambio chiavi).
- Abilitare lo scambio di chiavi ibrido post-quantistico dove disponibile.
Esempi di utilizzo di SSH
- Connessione a un server SSH locale su una porta non standard:
$ ssh -p 30000 user@127.0.0.1 - Generazione di una coppia di chiavi RSA robusta da 4096 bit:
$ puttygen -t rsa -b 4096 -o sample
Guide più dettagliate sulla connessione via SSH:
- Connessione a un VPS o server dedicato via SSH su Windows
- Connessione a un VPS o server dedicato via SSH su macOS
- Configurazione dell'autenticazione tramite chiave SSH sul server
Alcuni client, come PuTTY, offrono un'interfaccia grafica.
Per l'utilizzo di SSH in Python, le librerie più diffuse sono python-paramiko e python-twisted-conch.
Raccomandazioni di sicurezza
- Disabilitare il login root remoto (PermitRootLogin no).
- Vietare le password vuote.
- Cambiare la porta del server SSH dal valore predefinito 22 a una porta non standard.
- Utilizzare tipi di chiave moderni e robusti (preferibilmente Ed25519, o almeno RSA a 4096 bit con SHA-2).
- Valutare l'autenticazione basata su certificati o l'autenticazione a più fattori per ambienti ad alta sicurezza.
Riferimenti
Standard
Software di accesso terminale
- OpenSSH — la principale suite SSH libera
- PuTTY — popolare client SSH multipiattaforma con GUI
- Tectia SSH — soluzione SSH enterprise/commerciale