SSH – Protocollo e Connessione
Uno dei protocolli più diffusi per le comunicazioni è il protocollo SSH. Tramite un’accoppiata di chiavi pubblica/privata si può stabilire una connessione sicura tra due macchine che vogliono comunicare, permettendo a chi si connette di accedere al sistema ed eseguire operazioni.
Come sviluppatori, ci torna utile questo protocollo per collegarci in remoto ai nostri server ed eseguire tutte le operazioni che vogliamo; stabilendo la connessione, avremo un terminale (windows o linux) che ci permetterà di eseguire tutte le operazioni che un utente macchina può eseguire (solitamente le connessioni SSH non danno accesso al livello root).
Sistema operativo
Per la gestione dell’SSH è più veloce e comodo Linux rispetto a Windows; ecco perchè si trovano molte guide che utilizzando PuTTY su Windows, un software che ci dà un’interfaccia con un terminale Linux e i suoi comandi. Pure la creazione e gestione di chiavi SSH tramite PuTTY è più facile, quindi per Windows tralascerò l’argomento.
In ogni caso, io uso Debian quindi tutte le mie guide saranno con base Linux per ora XD
Creazione chiave
Il metodo più semplice per creare una chiave SSH è tramite il comando
ssh-keygen
senza alcun argomento; in questo modo si avvierà un processo di creazione in cui ci vengono chiesti un po’ di impostazioni.

ssh-keygenLa prima cosa che ci viene richiesta è il nome della chiave; di default viene suggerito id_rsa. La nostra macchina linux di default cercherà una chiave con questo nome per ogni connessione se non viene specificato altro.
Successivamente ci viene richiesta una passphrase, una forma di password che serve a sbloccare la lettura della chiave. È possibile ometterla

Una volta completato, verrà generata uan coppia di chiavi pubblica/privata che potremmo usare per autorizzarci in una connessione SSH. Ci viene anche dato un fingerprint e una chiave di criptazione, che è bene salvare da qualche parte.
Possiamo ora caricare le nostre chiavi sul server/servizio a cui ci vogliamo collegare e autorizzare/attivare le chiavi
Config file
Come detto sopra, un sistema linux per le connessioni ssh cercherà un file chiamato id_rsa. Se vogliamo specificare un altro file da utilizzare, da terminale possiamo usare l’opzione -i [percorso_file] per dire quale chiave usare.
Essendo però un po’ tedioso scriverlo ogni volta, possiamo istruire la nostra macchina a utilizzare un determinato file quando ci colleghiamo a un determinato host. Queste istruzioni vanno scritte in un file config nella cartella (di default) .ssh presente nella nostra home directory

Come si vede vengono date una serie di opzioni tramite un’accoppiata di keywork/valori; nella schermata d’esempio si specifica che quando ci si collega in ssh al dominio (e tutti i sottodomini) lpuk.it si deve usare il file chiamato id_rsa_lpuk e collegarsi alla porta 65100 (la porta di default dell’ssh è la 22) usando un certo username
Errore “permission too open”
Può capitare che la prima volta che si utilizza la chiave, torni l’errore “permission too open”. Questo vuol dire che i permessi di lettura/scrittura del file sono troppo aperti, cioè magari gli utenti a cui non appartiene il file possono leggerlo/modificarlo.
Per risolvere, basta limitarne i permessi tramite il comando chmod:
chmod 400 ~/.ssh/id_rsa