Proseguiamo l'analisi dei protocolli di rete del livello applicazione introducendo il
protocollo SSH, acronimo che sta per
Secure Shell. Si tratta di un protocollo che fu introdotto per sostituire i comandi
BSD rsh,
rlogin,
rcp, fornendo a differenza di questi ultimi un'infrastruttura per connessioni crittografate e con il supporto per l'autenticazione forte fra i diversi host che partecipano alla comunicazione e l'utente.
Del protocollo esistono due versioni: la più vecchia, detta
SSH1, è utilizzabile liberamente a patto che non si consegua un guadagno dal suo utilizzo; la versione più recente
SSH2, invece, impone un utilizzo privato, oppure in contesti scolastici; entrambe le versioni del protocollo sono state sviluppate da una società finlandese,
SSH Communications Security, che manutiene le principali distribuzioni di SSH, mentre la
Data Fellows, ora F-Secure Corp., ne ha acquisito i diritti di distribuzione, imponendo le licenze di cui sopra.
Entrambi i protocolli sono stati rilasciati come
Internet Standard; ne esiste un'implementazione con licenza open, che sfrutta anche dal punto di vista crittografico solo algoritmi non proprietari: si tratta della
OpenSSH, nata per essere inclusa nel sistema
OpenBSD.
Una caratteristica interessante di SSH è la capacità di offrire un
tunnel sicuro fra due porte di due host: in pratica è possibile fare in modo che tutto il traffico diretto verso una porta di un dato host A venga automaticamente reindirizzato verso una determinata porta dell'host B; tale comunicazione avverrà in maniera crittografata, fornendo l'opportunità di trasferire in maniera sicura dei dati, anche utilizzando protocolli insicuri.
Questa caratteristica del protocollo è detta
port forwarding, e oltre alla protezione del contenuto della comunicazione consente di oltrepassare anche limitazioni imposte a livello di routing o di firewall, facendo transitare contenuti, che altrimenti verrebbero bloccati.