Nella lezione precedente abbiamo introdotto alcuni importanti concetti relativi alla configurazione lato server di SSH.
In questa lezione tratteremo invece la configurazione lato client di SSH. Il client SSH è abbastanza configurabile e anche in questo caso è possibile applicare diverse configurazioni tramite l'uso della riga di comando, dei file di configurazione e delle variabili d'ambiente. La scelta tra queste tre differenti tipologie deve essere compiuta sulla base di quanto si voglia mantenere la configurazione SSH client: ciò comporta che l'applicazione di un'opzione mediante la riga di comando debba essere effettuata qualora si voglia applicare l'opzione per la durata di una singola istanza del client SSH, mentre quelle per mezzo di file di configurazione e variabili di ambiente, per periodi temporali più lunghi e nello specifico fino a una loro nuova modifica.
Presentiamo adesso una panoramica generale di questi tre metodi.
Riga di comando
L'applicazione delle opzioni di configurazione da riga di comando ci consentono di modificare il comportamento del client una sola volta, ovvero all'atto della sua invocazione e perdurano per tutto il tempo in cui è in esecuzione.
Ad esempio, se dobbiamo usare SSH su una connessione molto lenta, possiamo sfruttare un'opzione di configurazione per comprimere i dati e velocizzare quindi il flusso della comunicazione client/server. Per ottenere questo risultato dobbiamo adoperare il flag -C
, seguito dall'indirizzo del server SSH, come mostrato di seguito:
$ ssh -C server.html.it
Un elemento importante che dobbiamo sempre tenere a mente per il client SSH è il comando help
.
$ ssh --help
Questo stamperà un utile riepilogo che descrive tutte le opzioni che è possibile invocare tramite la riga di comando.
File di configurazione
I file di configurazione servono se non si vogliono digitare tramite il prompt sempre gli stessi comandi per la configurazione del proprio client SSH. I file di configurazione consentono, inoltre, di mantenere la stessa configurazione client finché questa non viene cambiata per mezzo di un nuovo file di configurazione.
Per OpenSSH, il file di configurazione del client utente SSH è denominato config
e il file di configurazione dell'intero sistema del client SSH è denominato ssh_config
. I file risiedono nelle seguenti posizioni:
- posizione del file di configurazione utente:
$HOME/.ssh/config
; - percorso predefinito del file di configurazione a livello di sistema:
/etc/ssh/ssh_config
.
Le opzioni della riga di comando hanno la precedenza più alta, sovrascrivendo qualsiasi configurazione del client.
Il file di configurazione locale dell'utente ha la precedenza più alta successiva e il file di configurazione a livello di sistema ha la precedenza più bassa. Per ogni parametro, specificato in riga di comando e file di configurazione, il client SSH utilizza il primo valore che ottiene secondo l'elenco precedente.
Un esempio molto semplice di configurazione client SSH riguarda la compressione dei dati introdotta nel paragrafo precedente. Potremmo abilitare la compressione dei dati per tutti i client SSH che vengono lanciati dall'utente. Per far questo, quello che bisogna inserire all'interno del file di configurazione è la seguente stringa:
Compression yes
Oppure, adoperando la notazione keyword e valore, potremmo dire:
Compression=yes
Le configurazioni applicabili sono svariate e la possibilità di adoperare un file per la memorizzazione dei comandi non è di poco conto. Per esempio, potremmo voler decidere di configurare i client in modo che si comportino diversamente sulla base di ogni host remoto che visitano. Questo può essere ottenuto immediatamente grazie alla riga di comando:
$ssh -a -p 220 -c blowfish -l vito -i myself server.html.it
Oppure, in alternativa, per mezzo di un file di configurazione in cui andremo a inserire:
# per OpenSSH
Host mio_server
ForwardAgent no
Port 220
Cipher blowfish
User vito
IdentityFile myself
HostName server.html.it
Le precedenti opzioni della riga di comando vengono raggruppate sotto il nome "mio_server". Oltre a non aver scritto tutto su un'unica riga, pena l'ileggibilità del comando, siamo anche riusciti a capire in dettaglio i valori di ogni parametro senza doverci ricordare flag particolari o recuperare informazioni da Internet.
Adesso, per eseguire un client con queste opzioni abilitate, dovremmo digitare semplicemente:
$ssh mio_server
I file di configurazione del client sono, inoltre, divisi in sezioni. Ogni sezione contiene le impostazioni per un host remoto o per un insieme di host remoti correlati, come per gli host appartenenti a un dato dominio. L'inizio di una sezione è contrassegnato in modo diverso nelle diverse implementazioni SSH. Per OpenSSH, la parola chiave Host
dà inizio a una nuova sezione, seguita da una stringa che identifica il nome dell'host.
Host server.html.it
Le impostazioni si applicano solo agli host indicati nella specifica (dopo la keyword Host
). La sezione termina alla successiva specifica di un host o alla fine del file, a seconda di quale evento si verifichi per primo.
I file di configurazione richiedono un po' di tempo per essere scritti, ma a lungo andare sono dei significativi salvatempo.
Variabili d'ambiente
I client SSH si basano su una serie di variabili di ambiente e alcune loro funzionalità sono gestibili tramite modifica dei valori di tali variabili. Le variabili d'ambiente possono essere impostate tramite il prompt dei comandi del sistema operativo, mediante metodi standard. Come per esempio:
C shell family (csh, tcsh)
$ setenv MY_VARIABLE 1
# Bourne shell family (sh, ksh, bash)
$ MY_VARIABLE=1
$ export MY_VARIABLE
In alternativa, le variabili e i valori di ambiente possono essere specificati in un file. Gli amministratori di sistema possono impostare variabili di ambiente per tutti gli utenti in /etc/environment
e gli utenti possono settarle in ~/.ssh/environment
(OpenSSH).
Questi file contengono righe che seguono la notazione: NOME=VALORE
dove NOME
è il nome di una variabile di ambiente e VALORE, il suo valore. Il valore della variabile non deve essere racchiuso tra virgolette.
Conclusioni
I client SSH sono altamente configurabili tramite riga di comando, file di configurazione e variabili di ambiente. Ricordiamo che le opzioni della riga di comando hanno la precedenza più alta, seguiti dal file di configurazione del client locale e infine dal file di configurazione del client di sistema.
I file di configurazione del client sono costituiti da sezioni che si applicano a singoli host o gruppi di host. Per motivi di debug consigliamo di adoperare sempre l'opzione verbose (comando -v
) quando eseguiamo un client SSH. Nella prossima lezione vedremo come utilizzare l'applicativo putty su Windows.