In Ubuntu potete generare fa­cil­men­te una coppia di chiavi SSH tramite terminale, per poi inviare la chiave pubblica al vostro server e con­fi­gu­ra­re la pos­si­bi­li­tà di accesso sicuro. Qual è la procedura in dettaglio?

Che cos’è una chiave SSH?

Se de­si­de­ra­te uti­liz­za­re una con­nes­sio­ne sicura tramite SSH è possibile usare l’au­ten­ti­ca­zio­ne tramite chiavi SSH senza im­mis­sio­ne della password. In pratica serve una coppia di chiavi SSH composta da una chiave pubblica e una privata. La chiave pubblica è me­mo­riz­za­ta sul sistema verso il quale stabilire la con­nes­sio­ne SSH, ad esempio un server. La chiave SSH privata, da custodire con cura, è generata e salvata su siti client ed è ne­ces­sa­ria per decifrare la chiave SSH pubblica mentre s’instaura la con­nes­sio­ne.

Consiglio

Le chiavi SSH sono uti­liz­za­te oggi con i servizi più svariati. Inoltre, a partire dalla fine del 2021, l’SSH è uno dei due metodi di au­ten­ti­ca­zio­ne di­spo­ni­bi­li per l’accesso a GitHub tramite riga di comando. Ulteriori in­for­ma­zio­ni su questo argomento sono di­spo­ni­bi­li nel nostro articolo “Utilizzo di una chiave SSH con GitHub”.

Ge­ne­ra­zio­ne e con­fi­gu­ra­zio­ne di una chiave SSH in Ubuntu: guida passo per passo

Accesso sicuro su server o per de­ter­mi­na­ti servizi senza im­mis­sio­ne della password: l’uso di coppie di chiavi SSH per l’au­ten­ti­ca­zio­ne è estre­ma­men­te pratico. Con la procedura seguente vi mostriamo un esempio basato su Ubuntu 22.04 su come generare chiavi SSH in Ubuntu e con­fi­gu­ra­re l’au­ten­ti­ca­zio­ne su un server per uti­liz­za­re le chiavi SSH per la vostra con­nes­sio­ne di rete.

Consiglio

State cercando una soluzione sicura per il file hosting? No­leg­gia­te il vostro server SFTP con IONOS per tra­sfe­ri­re e salvare i vostri dati in sicurezza tramite SSH e FTP.

Primo passaggio: ge­ne­ra­zio­ne di una coppia di chiavi SSH

Potete creare una coppia di chiavi SSH, composta da chiave pubblica e chiave privata, in modo rapido e diretto in Ubuntu tramite il terminale. Per farlo, avviate la riga di comando di Ubuntu ed eseguite il seguente comando:

ssh-keygen

In questo modo viene generata au­to­ma­ti­ca­men­te una coppia di chiavi RSA con cifratura a 3.072 bit, più che suf­fi­cien­te per la maggior parte delle ap­pli­ca­zio­ni. È possibile generare anche chiavi più grandi a 4.096 bit ag­giun­gen­do al comando il parametro “-b 4096”.

ssh-keygen -b 4096

Dopo aver eseguito il comando, Ubuntu genera una coppia di chiavi. Il sistema chiede se salvare le chiavi SSH nella cartella utente di Ubuntu (sot­to­car­tel­la /.ssh); potete con­fer­ma­re la richiesta con il tasto Invio. In al­ter­na­ti­va, indicate un altro percorso.

Immagine: Generazione di chiavi SSH tramite il terminale di Ubuntu
Ge­ne­ra­zio­ne di chiavi SSH tramite il terminale di Ubuntu.

Dopo aver scelto il percorso di me­mo­riz­za­zio­ne della coppia di chiavi, Ubuntu vi offre la pos­si­bi­li­tà di definire una pas­sph­ra­se sicura. Una pas­sph­ra­se aggiunge un ulteriore livello di sicurezza al metodo di au­ten­ti­ca­zio­ne criptato per evitare l’accesso da parte di utenti non au­to­riz­za­ti. Digitate la pas­sph­ra­se de­si­de­ra­ta oppure lasciate la voce vuota se preferite fare a meno di questo livello di sicurezza.

In entrambi i casi, con­fer­ma­te con il tasto Invio per ricevere la conferma dell’esito positivo della ge­ne­ra­zio­ne della chiave con un’“immagine randomart” della chiave SSH:

Immagine: “Immagine randomart” di una coppia di chiavi SSH in Ubuntu
“Immagine randomart” di una coppia di chiavi SSH in Ubuntu.
Consiglio

Non siete sicuri della versione del software che state uti­liz­zan­do? Leggete l’articolo seguente per sapere come vi­sua­liz­za­re la versione di Ubuntu.

Secondo passaggio: tra­smis­sio­ne della chiave pubblica sul server

Nel prossimo passaggio la chiave pubblica viene trasmessa al sistema di de­sti­na­zio­ne con il quale creare suc­ces­si­va­men­te le con­nes­sio­ni SSH. A tal fine è ne­ces­sa­rio il nome utente che usate per accedere al sistema e l’indirizzo IP e/o il dominio del sistema. Se non avete ancora definito nessun nome utente, potete usare al suo posto l’utente “root”.

Per tra­smet­te­re la chiave SSH pubblica, Ubuntu utilizza lo strumento ssh-copy-id come im­po­sta­zio­ne pre­de­fi­ni­ta. La sintassi del comando è la seguente:

ssh-copy-id nomeutente@indirizzoip/dominio
bash

Se create per la prima volta una con­nes­sio­ne con questo host di de­sti­na­zio­ne, un messaggio del terminale segnala che non è possibile de­ter­mi­na­re l’au­ten­ti­ca­zio­ne dell’host (“au­then­ti­ci­ty of host … can’t be esta­bli­shed”). Digitate “yes” e con­fer­ma­te l’im­mis­sio­ne per pro­se­gui­re con la con­fi­gu­ra­zio­ne.

Immagine: Trasmissione della chiave SSH pubblica tramite terminale Ubuntu
Tra­smis­sio­ne della chiave SSH pubblica tramite terminale Ubuntu.

Quindi, il servizio cerca la chiave creata in pre­ce­den­za. Se la trova, potete ri­pren­de­re la procedura digitando la password per l’accesso al sistema di de­sti­na­zio­ne. A con­fi­gu­ra­zio­ne terminata, ricevete il seguente output se la chiave pubblica è stata trasmessa cor­ret­ta­men­te:

Immagine: Chiave SSH in Ubuntu: trasmissione corretta al sistema di destinazione
Chiave SSH in Ubuntu: tra­smis­sio­ne corretta al sistema di de­sti­na­zio­ne.

Terzo passaggio: au­ten­ti­ca­zio­ne SSH sull’host di de­sti­na­zio­ne

Ora potete accedere in qualsiasi momento tramite SSH al di­spo­si­ti­vo o al server che dispone della chiave pubblica. Come nel caso della tra­smis­sio­ne della chiave, sono necessari il nome utente e l’indirizzo IP e/o il dominio dell’host di de­sti­na­zio­ne, da inserire come previsto nel comando seguente:

ssh nomeutente@indirizzoip/dominio
bash

Se avete con­fi­gu­ra­to una pas­sph­ra­se per la coppia di chiavi, questa viene richiesta al passaggio suc­ces­si­vo. Digitate la password assegnata e premete quindi “Unlock” per col­le­gar­vi al sistema di de­sti­na­zio­ne.

Immagine: Chiave SSH in Ubuntu: immissione della passphrase
Chiave SSH in Ubuntu: im­mis­sio­ne della pas­sph­ra­se.

Quarto passaggio: di­sat­ti­va­re l’im­mis­sio­ne della password

Se l’accesso con la coppia di chiavi SSH è andato a buon fine, l’accesso tramite password per im­po­sta­zio­ne pre­de­fi­ni­ta non è più ne­ces­sa­rio. Questo metodo di au­ten­ti­ca­zio­ne è comunque sempre attivo, anche per le persone non au­to­riz­za­te che cercano di accedere al sistema tramite attacchi di forza bruta.

Per ottenere maggiore sicurezza da questo punto di vista, è possibile di­sat­ti­va­re l’accesso tramite password sul server e/o sul di­spo­si­ti­vo di de­sti­na­zio­ne. A tal fine, accedete tramite SSH e aprite quindi il file di con­fi­gu­ra­zio­ne del servizio SSH:

sudo nano /etc/ssh/sshd_config
bash

Nel file di con­fi­gu­ra­zio­ne, cercate la voce “Pas­swor­dAu­then­ti­ca­tion” e im­po­sta­te­la su “no”.

Immagine: Modifiche del file di configurazione del servizio SSH
Modifiche del file di con­fi­gu­ra­zio­ne del servizio SSH.

Salvate le modifiche al file di con­fi­gu­ra­zio­ne e avviate quindi il servizio SSH con il comando seguente:

sudo systemctl restart ssh
bash

Come tra­smet­te­re ma­nual­men­te la vostra chiave SSH in Ubuntu

Lo strumento ssh-copy-id, descritto al secondo passaggio, non è di­spo­ni­bi­le su tutti i sistemi. In questo caso, è comunque possibile tra­smet­te­re la chiave pubblica generata al sistema di de­sti­na­zio­ne ma­nual­men­te e con facilità nel modo seguente.

Per prima cosa, eseguite il comando seguente per vi­sua­liz­za­re la chiave pubblica:

cat ~/.ssh/id_rsa.pub
bash
Immagine: Chiave pubblica SSH generata nel terminale Ubuntu
Chiave pubblica SSH generata nel terminale Ubuntu.

Copiate quindi la chiave ri­sul­tan­te nel file “au­tho­ri­zed_keys” presente nella cartella “ssh” sull’host di de­sti­na­zio­ne. Se la cartella non è ancora presente, createla con i comandi seguenti:

mkdir -p ~/.ssh
bash

Uti­liz­za­te quindi il comando seguente per tra­smet­te­re la chiave:

echo chiave >> ~/.ssh/authorized_keys
bash

Nel comando, al posto di “chiave”, inserite l’output pre­ce­den­te­men­te ottenuto partendo da “ssh-rsa”.

Nell’ultimo passaggio ve­ri­fi­ca­te di aver rimosso tutti i gruppi e tutte le ulteriori au­to­riz­za­zio­ni per la cartella “ssh” e per il file “au­tho­ri­zed_keys”:

chmod -R go= ~/.ssh
bash
Consiglio

Cercate ulteriori in­for­ma­zio­ni sugli argomenti “SSH” e “Ubuntu”? I seguenti articoli della Digital Guide po­treb­be­ro in­te­res­sar­vi:

Vai al menu prin­ci­pa­le