Raspberry PI – Come creare e usare le chiavi SSH

winscp ssh

Definire una coppia di chiavi SSH su di un Raspberry Pi è piuttosto semplice, e consente connessioni più sicure attraverso la rete.In questo tutorial cercheremo di spiegare in che modo sia possibile creare e configurare chiavi SSH pre potersi collegare remotamente ad un Pi senza dover ogni volta inserire una password. Un passo avanti nella IT Security.

Le chiavi SSH vengono solitamente create utilizzando la “crittografia a chiave pubblica”. In sostanza, una chiave pubblica viene salvata all’interno di un device remoto (come il nostro Raspberry Pi) mentre una seconda chiave (che rimarrà privata) viene usata dal proprietario per dimostrarne la proprietà. La chiave pubblica può essere data a chiunque, mentre la chiave privata deve restare segreta. È infatti solo la coppia che consente l’azione crittografica.

A livello pratico, le chiavi non sono altro che una lunga serie di caratteri salvati in un file di testo.

L’articolo richiede un accesso diretto ad un Raspberry PI con tastiera e monitor o un accesso remoto con SSH o VNC.

Creazione della directory SSH e del file authorized_keys

Per prima cosa occorre posizionarsi nella home directory:

e creare una nuova directory chiamata “ssh” :

Nel sistema operativo Linux, le directory ed i file che iniziano con il punto (“.”)  sono “nascosti al listing”, o hidden, a meno di comandi particolari

Spostiamoci nella nuova directory:

e creiamo un file vuoto di nome “authorized_keys”:

Definizione dei permessi

Solitamente una directory appena creata ha associati i permessi 755, vale a dire lettura ed esecuzione abilitata per  tutti, scrittura abilitata per il proprietario.

I permessi nella directory ssh devono essere modificati in 700, per impedire lettura, scrittura ed esecuzione a terze persone:

Per la stessa ragione, occorre cambiare i permessi del file “authorized_keys” in modo che solo l’utente PI possa leggere e scrivere:

Creazione di una nuova coppia di chiavi

Quando si desideri creare una nuova coppia di chiavi crittografiche, è sufficiente utilizzare l’utility ssh-keygen.

Entrare nella directory .ssh:

e lanciare l’utility ssh-keygen:

Verrà richiesta una locazione in cui salvare il file delle chiavi. Premere ENTER per accettare il default.

Verrà quindi richiesta una passphrase. Si tratta di un passaggio opzionale. Quando si utilizza una passphrase, la frase potrebbe venire richiesta all’utilizzodelle chiavi come maggiore elemento di sicurezza. Sta all’utente decidere se farne uso. Inserire la passphrase o lasciare il campo in bianco, quindi premere ENTER per terminare l’azione.

ATTENZIONE: se si predilige la creazione delle chiavi SSH tramite passphrase, è assolutamente necessario non dimenticarla!

Questo processo dovrebbe creare due file: una chiave pubblica, chiamata “id_rsa.pub” ed una relativa chiave privata chiamata “id_rsa”.

Aggiungere il contenuto della relativa chiave pubblica al file authorized_keys attraverso il comando:
cat id_rsa.pub >> authorized_keys
Alcuni client preferiscono chiavi in stile PuTTY. Nel caso, è opportuno creare tali alternative in questo formato ora, in modo da poter scegliere in futuro. La lista di comandi che segue installerà puttygen per creare una versione PuTTY delle chiavi appena preparate:

quindi:

A questo punto dovrebbero essere presenti tre file:

  • id_rsa
  • id_rsa.pub
  • id_rsa.ppk

Copiare i tre file in una posizione sicura. La chiave privata (id_rsa o id_rsa.ppk) è richiesta dal client utilizzato per la connessione al Pi. Questo potrebbe essere lo stesso PC, un laptop o persino uno smartphone. La chiave pubblica (id_rsa) viene utilizzata dal Pi al quale ci si collegherà.

È possibile utilizzare la medesima chiave pubblica su diversi device, a patto che la chiave privata sia quella giusta.

Una volta salvate le chiavi in una posizione sicura, è possibile cancellarle dal PI.:

Aggiungere una chiave esistente

Qualora si abbia già una coppia di chiavi SSH pubblica/privata a disposizione, è possibile aggiungere la chiave pubblica al file “authorized_keys”.

Esistono due diversi metodi per inserire i dettagli della chiave pubblica nel file delle chiavi.

Il primo metodo consiste nel modificare il file delle chiavi direttamente attraverso l’edityor nano:

incollando il contenuto del file della chiave pubblica nell’editor. Si può utilizzare CTRL-X, Y ed ENTER per salvare le modifichee tornare alla linea di comando.

Il secondo metodo consiste nel copiare il file della chiave pubblica (ad esempio id_rsa.pub) nella directory .ssh per poi usare il seguente comando per aggiungerlo al file delle chiavi:

cd ~/.ssh && cat id_rsa.pub >> authorized_keys

dove “id_rsa.pub” è il file della chiave pubblica.

Ora che il file authorized_keys è stato modificato, è possibile cancellare il file id_rsa.pub:

Configurare il client SSH

Risulota ora possibile utilizzare il proprio client SSH preferito per collegarsi al Pi, ma anziché specificare la password sarà sufficiente puntare alla chiave privata. Il procedimento dipende molto dall’implementazione del client utilizzato.

As an example here are the session settings in WinSCP :

winscp ssh Raspberry PI

L’indirizzo IP e lo username devono essere specificati. Occorre inoltre selezionare il file della chiave privata.

Altri client SSH operano in modo simile.

Connessione

A questo punto, se la configurazione è corretta, sarà possibile collegarsi con il nosto Pi senza dover inserire la password.

Sebbene diversi client possano “ricordare” le password, il vantaggio delle chiavi SSH consiste nel poter utilizzare lo stesso file di chiavi in tutti i client. Infatti, cambiando il file di chiavi non sarà necessario cambiare la password su tutte le macchine nella quale era stata “ricordata”.

È infine possibile scaricare la chiave privata su di un disco rimovibile o all’interno di un contenitore cifrato (come Veracrypt). In tal modo, anche qualora il computer venisse rubato, le connessioni al device non funzionerebbero comunque, anche se il malintenzionato aprisse il client SSH e riuscisswe a vedere le sessioni salvate. Non esiste accesso senza file delle chiavi.


Convertire file PPK in chiavi pubblica e privata con puttygen

Qualora fosse in futuro necessario convertire un file PPK Putty PPK in un file di chiavi in stile OpenSSH, ecco di seguito la lista dei comandi da utilizzare per convertire PPK in chiavi privata e pubblica:


Abbiamo imparato come sia possibile accedere al proprio Raspberry PI attraverso il comando software SSH; tuttavia l’approccio canonico con username e password seguita a funzionare. L’importante è che la password sia sufficientemente lunga e complessa, e che la password di default del Raspberry Pi sia stata cambiata in qualcosa di meno conosciuto.

È possibile far riferimento completo alle chiavi SSH e disabilitare la possibilità di eseguire login attraverso username e password, ma di questo parleremo magari un’altra volta.

Definire ciò che si è non risulta mai semplice o intuitivo, in specie quando nella vita si cerca costantemente di migliorarsi, di crescere tanto professionalmente quanto emotivamente. Lavoro per contribuire al mutamento dei settori cardine della computer science e per offrire sintesi ragionate e consulenza ad aziende e pubblicazioni ICT, ma anche perche’ ciò che riesco a portare a termine mi dà soddisfazione, piacere. Così come mi piace suonare (sax, tastiere, chitarra), cantare, scrivere (ho pubblicato 350 articoli scientfici e 3 libri sinora, ma non ho concluso ciò che ho da dire), leggere, Adoro la matematica, la logica, la filosofia, la scienza e la tecnologia, ed inseguo quel concetto di homo novus rinascimentale, cercando di completare quelle sezioni della mia vita che ancora appaiono poco ricche.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.