Come generare chiavi SSH

Come generare chiavi SSH

In questa guida vedremo di capire come si fa a generare le chiavi per accedere a SSH. SSH è un protocollo di comunicazione relativamente giovane: a differenza della mail che esisteva già negli anni 70, SSH è stato introdotto a metà degli anni 90 dal finlandese Tatu Ylönen, costretto a fronteggiare una falla di sicurezza informatica ed ideatore del sistema a riga di comando remota (cioè posso inviare ed eseguire comandi su una macchina che è connessa ad internet col mio client, ovviamente a certe condizioni) usato ancora oggi.

E non fatevi prendere dallo scoraggiamento, soprattutto: la maggioranza delle guide su SSH fanno, senza troppi giri di parole, abbastanza schifo. Lo dicono nel modo più bonario possibile, perchè evidentemente sono pensate per specialisti e anch’io, da specialista, a volte fatico a capirci qualcosa. L’accesso ad SSH in molti casi, di fatto, scoraggia moltissimi operativi: non fosse altro che la storia delle chiavi pubbliche e private non è proprio per tutti. Ma nello scenario moderno, in effetti, molti addetti ai lavori non sono per forza di cose informatici: quindi è importante che uno sappia come funziona SSH e riesca a generare le chiavi per accedere. USare le chiavi SSH è una buona alternativa, a ben vedere, all’uso di username e password: e se n’è accorto per primo il buon Tatu che si è inventato un modo per accedere alle funzionalità di qualsiasi dispositivo Linux sfruttando uno dei principi base della crittografia: le chiavi pubbliche e le chiavi private.

Immaginatela in questi termini: siete un webmaster che desidera connettersi al proprio sito web (ad esempio perché, come diciamo scherzosamente in gergo, l’avemo sderenato), ad esempio per riavviare il server, leggere il log o magari per fare modifiche al volo perchè non abbiamo avuto il tempo di configurare il buon FTP. Avete un problemone, pero’: per accedere dovrete procurarvi una chiave pubblica (che rappresenta un po’ la vostra carta d’identità) e soprattutto una chiave privata, una sorta di superpassword che non sia univoca, soprattutto: bisogna fare in modo che quella password funzioni solo col vostro bellissimo computer. SSH pensa a tutto questo e risponde: “sì, potete farlo”!

Aprire il terminale di comando

Come prima cosa accedete al terminale di comando (da Mac e Linux) oppure, se preferite, andate su PuTTY. Procutevi i dati di accesso alla VPS e soprattutto la username (che di solito è root) e l’IP del server. Il primo passo da eseguire è subito detto: vi serve generare la coppia di chiavi, la chiave pubblica e la chiave privata. Come fare? Digitate nel terminale di comando (siete ancora in locale nel vostro computer, non vi siete connessi ad SSH):

ssh-keygen

In risposta a ssh-keygen vedrete qualcosa del genere:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/.ssh/id_rsa):

Questo comando genera una coppia di chiavi pubblica e privata, generalmente a 2048 bit (che va bene per la maggiorparte dei casi pratici, almeno ad oggi). Vuol dire che la chiave sarà detta chiave RSA a 2048 bit ed è davvero molto, molto sicuro accedere ad un sistema remoto generandone una (molto più di quanto non sia fare uso di una password, per quanto complessa ed imprevedibile possa essere.

Cosa rispondere a quella richiesta di input? In genere basta premere invio e confermare il salvataggio della chiave dentro il path indicato (/home/.ssh/id_rsa). Vedrete una cosa del genere:

Enter passphrase (empty for no passphrase):

A questo punto dovreste specificare la password personale, che dovrete scegliere voi e che andrà digitata seguita dal tasto invio. Attenzione che questa password dovrete memorizzarla, perchè non la vedrete mentre la digitate e non sarà copia-incollabile da nessuna parte (sarà comunque richiesta conferma una seconda volta). Se non è la prima volta che fate questo discorso, la chiave potrebbe voler essere sovrascritta, come avviene se vedete una cosa del genere:
/home/home/.ssh/id_rsa already exists.
Overwrite (y/n)?

Attenzione: qui il passo è importante. Se sovrascrivete qualsiasi connessione precedentemente impostata sarà invalidata. La chiave attuale sovrascriverà quella precedente, e sarà persa per sempre. Se scegli sì, devi confermare la tua passphrase o password di prima:

Enter passphrase (empty for no passphrase):

Se non vuoi complicarti la vita (e non ci tieni troppo alla sicurezza) basta premere direttamente invio. Adesso avviene la vera e propria magia, in effetti:

Your identification has been saved in /home/.ssh/id_rsa.
Your public key has been saved in /home/.ssh/id_rsa.pub.
The key fingerprint is:
[...] [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|     ..o         |
|   M o= .        |
|    o. P         |
|        *.       |
|      ..L        |
|     L -.        |
|   =F.*.         |
|. =++..          |
|o=++.            |
+-----------------+

Come distinguere chiave privata da chiave pubblica come file

In pratica è stata creata una chiave privata (che non avrà alcuna estensione):

/home/pippo/.ssh/id_rsa 

e una chiave pubblica che avrà estensione .pub:

/home/pippo/.ssh/id_rsa.pub

Installare la chiave pubblica sul server (terminale)

Adesso non ci resta che copiare la chiave pubblica

id_rsa.pub

sul server in modo da poter utilizzare l’autenticazione basata su chiave SSH per accedere.

A livello di terminale la cosa si effettua grazie al comando

ssh-add

Per la sua semplicità, questo metodo è altamente raccomandato se disponibile. Se non disponi di ssh-copy-id sul tuo computer client, puoi utilizzare uno dei due metodi alternativi forniti in questa sezione (copia tramite SSH basato o copia manuale della chiave).  La chiave privata deve essere caricata nel terminale di comando utilizzando il comando ssh-add:

ssh-add /home/youruser/.ssh/id_rsa

Installare la chiave pubblica sul server (cPanel)

In questo caso il processo è abbastanza simile all’installazione di certificati SSL che abbiamo visto nel tutorial sull’installazione di Let’s Encrypt su cPanel. Per installare la chiave pubblica su un servizio di hosting, ad esempio, non devi fare altro se non caricare la chiave pubblica nel cPanel, sotto SSH/Shell Access. Sui cPanel moderni si può semplicemente copia-incollare all’nterno del cPanel nella sezione Public Key, dopo aver aperto il file id_rsa con un qualsiasi editor di testo. La chiave inserita farà parte delle chiave autorizzate (authorized keys) e vi darà il via libera per accedere.

1 voto


Informazioni sull'autore

Salvatore Capolupo

Consulente SEO, ingegnere informatico e fondatore di Trovalost.it, Pagare.online, Lipercubo.it e tanti altri. Di solito passo inosservato e non ne approfitto.