Sequenza degli eventi di una connessione SSH

Una serie di eventi contribuisce a salvaguardare l'integrità di una comunicazione SSH tra due host.

Innanzitutto viene creato un livello di trasporto sicuro, in modo che il client sappia che sta comunicando con il server corretto. Poi viene cifrata la comunicazione tra il client e il server con l'uso di un cifratore simmetrico.

In seguito, il client si autentifica al server senza preoccuparsi che le informazioni di autenticazione vengano compromesse. OpenSSH su Red Hat Linux utilizza le chiavi DSA o RSA e la versione 2.0 del protocollo SSH per l'autenticazione.

Infine, quando il client si è autenticato al server, è possibile utilizzare in modo sicuro i vari servizi usati tramite connessione, per esempio una sessione interattiva della shell, le applicazioni X11 e le porte TCP/IP immesse in un tunnel.

L'intero processo di connessione avviene con poco lavoro aggiuntivo necessario sul sistema locale. Infatti, in molti sensi, SSH funziona bene perché è conosciuto dagli utenti abituati a metodi di connessione meno sicuri.

Nell'esempio che segue, user1 inizializza sul sistema client una connessione SSH a un server, L'indirizzo IP del server è 10.0.0.2, ma si potrebbe usare anche il nome del dominio. Il nome di login di user1 sul server è user2. Il comando ssh è scritto nel seguente modo:

[user1@machine1 user1]$ ssh user2@10.0.0.2

Il client OpenSSH richiede la chiave privata dell'utente per l'autenticazione. Comunque tale chiave non viene inviata tramite la connessione sicura tra il client e il server. Viene invece usata per aprire il file id_dsa e generare una firma, inviata poi al server. Se il server ha una copia della chiave pubblica che può essere utilizzata per la verifica della firma, l'utente viene autenticato.

In questo esempio, l'utente utilizza una chiave DSA (si possono usare anche le chiavi RSA) e vede il prompt seguente:

Enter passphrase for DSA key '/home/user1/.ssh/id_dsa':

Se l'autenticazione della chiave pubblica fallisce per qualsiasi ragione (se per esempio la chiave è inserita in modo scorretto o le informazioni di autenticazione non sono presenti sul sul server) viene provato un'altro tipo di autenticazione. Nel nostro esempio il server OpenSSH consente a user1 di autenticarsi utilizzando la password di user2 perché la firma inviata non coincide con la chiave pubblica memorizzata da user2:

user2@machine2's password:

Con l'inserimento di una password corretta, compare il prompt della shell. Naturalmente user2 deve già avere un account sulla macchina 10.0.0.2, affinché l'autenticazione della password funzioni.

Last login: Mon Apr 15 13:27:43 2001 from machine1
[user2@machine2 user2]$ 

A questo punto l'utente interagisce con la shell come con telnet o rsh, l'unica differenza consiste nel fatto che la comunicazione è cifrata.

Altri tool SSH, come scp e sftp, funzionano in modo simile a rcp e ftp. Per maggiori informazioni ed esempi sull'uso di questi e altri comandi SSH, consultate la Official Red Hat Linux Customization Guide.