Generazione e configurazione di una chiave SSH in Ubuntu

In Ubuntu potete generare facilmente una coppia di chiavi SSH tramite terminale, per poi inviare la chiave pubblica al vostro server e configurare la possibilità di accesso sicuro. Qual è la procedura in dettaglio?

Che cos’è una chiave SSH?

Se desiderate utilizzare una connessione sicura tramite SSH è possibile usare l’autenticazione tramite chiavi SSH senza immissione della password. In pratica serve una coppia di chiavi SSH composta da una chiave pubblica e una privata. La chiave pubblica è memorizzata sul sistema verso il quale stabilire la connessione SSH, ad esempio un server. La chiave SSH privata, da custodire con cura, è generata e salvata su siti client ed è necessaria per decifrare la chiave SSH pubblica mentre s’instaura la connessione.

Consiglio

Le chiavi SSH sono utilizzate oggi con i servizi più svariati. Inoltre, a partire dalla fine del 2021, l’SSH è uno dei due metodi di autenticazione disponibili per l’accesso a GitHub tramite riga di comando. Ulteriori informazioni su questo argomento sono disponibili nel nostro articolo “Utilizzo di una chiave SSH con GitHub”.

Generazione e configurazione di una chiave SSH in Ubuntu: guida passo per passo

Accesso sicuro su server o per determinati servizi senza immissione della password: l’uso di coppie di chiavi SSH per l’autenticazione è estremamente pratico. Con la procedura seguente vi mostriamo un esempio basato su Ubuntu 22.04 su come generare chiavi SSH in Ubuntu e configurare l’autenticazione su un server per utilizzare le chiavi SSH per la vostra connessione di rete.

Consiglio

State cercando una soluzione sicura per il file hosting? Noleggiate il vostro server SFTP con IONOS per trasferire e salvare i vostri dati in sicurezza tramite SSH e FTP.

Primo passaggio: generazione 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 automaticamente una coppia di chiavi RSA con cifratura a 3.072 bit, più che sufficiente per la maggior parte delle applicazioni. È possibile generare anche chiavi più grandi a 4.096 bit aggiungendo 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 (sottocartella /.ssh); potete confermare la richiesta con il tasto Invio. In alternativa, indicate un altro percorso.

Generazione di chiavi SSH tramite il terminale di Ubuntu
Generazione di chiavi SSH tramite il terminale di Ubuntu.

Dopo aver scelto il percorso di memorizzazione della coppia di chiavi, Ubuntu vi offre la possibilità di definire una passphrase sicura. Una passphrase aggiunge un ulteriore livello di sicurezza al metodo di autenticazione criptato per evitare l’accesso da parte di utenti non autorizzati. Digitate la passphrase desiderata oppure lasciate la voce vuota se preferite fare a meno di questo livello di sicurezza.

In entrambi i casi, confermate con il tasto Invio per ricevere la conferma dell’esito positivo della generazione della chiave con un’“immagine randomart” della chiave SSH:

“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 utilizzando? Leggete l’articolo seguente per sapere come visualizzare la versione di Ubuntu.

Secondo passaggio: trasmissione della chiave pubblica sul server

Nel prossimo passaggio la chiave pubblica viene trasmessa al sistema di destinazione con il quale creare successivamente le connessioni SSH. A tal fine è necessario 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 trasmettere la chiave SSH pubblica, Ubuntu utilizza lo strumento ssh-copy-id come impostazione predefinita. La sintassi del comando è la seguente:

ssh-copy-id nomeutente@indirizzoip/dominio
bash

Se create per la prima volta una connessione con questo host di destinazione, un messaggio del terminale segnala che non è possibile determinare l’autenticazione dell’host (“authenticity of host … can’t be established”). Digitate “yes” e confermate l’immissione per proseguire con la configurazione.

Trasmissione della chiave SSH pubblica tramite terminale Ubuntu
Trasmissione della chiave SSH pubblica tramite terminale Ubuntu.

Quindi, il servizio cerca la chiave creata in precedenza. Se la trova, potete riprendere la procedura digitando la password per l’accesso al sistema di destinazione. A configurazione terminata, ricevete il seguente output se la chiave pubblica è stata trasmessa correttamente:

Chiave SSH in Ubuntu: trasmissione corretta al sistema di destinazione
Chiave SSH in Ubuntu: trasmissione corretta al sistema di destinazione.

Terzo passaggio: autenticazione SSH sull’host di destinazione

Ora potete accedere in qualsiasi momento tramite SSH al dispositivo o al server che dispone della chiave pubblica. Come nel caso della trasmissione della chiave, sono necessari il nome utente e l’indirizzo IP e/o il dominio dell’host di destinazione, da inserire come previsto nel comando seguente:

ssh nomeutente@indirizzoip/dominio
bash

Se avete configurato una passphrase per la coppia di chiavi, questa viene richiesta al passaggio successivo. Digitate la password assegnata e premete quindi “Unlock” per collegarvi al sistema di destinazione.

Chiave SSH in Ubuntu: immissione della passphrase
Chiave SSH in Ubuntu: immissione della passphrase.

Quarto passaggio: disattivare l’immissione della password

Se l’accesso con la coppia di chiavi SSH è andato a buon fine, l’accesso tramite password per impostazione predefinita non è più necessario. Questo metodo di autenticazione è comunque sempre attivo, anche per le persone non autorizzate che cercano di accedere al sistema tramite attacchi di forza bruta.

Per ottenere maggiore sicurezza da questo punto di vista, è possibile disattivare l’accesso tramite password sul server e/o sul dispositivo di destinazione. A tal fine, accedete tramite SSH e aprite quindi il file di configurazione del servizio SSH:

sudo nano /etc/ssh/sshd_config
bash

Nel file di configurazione, cercate la voce “PasswordAuthentication” e impostatela su “no”.

Modifiche del file di configurazione del servizio SSH
Modifiche del file di configurazione del servizio SSH.

Salvate le modifiche al file di configurazione e avviate quindi il servizio SSH con il comando seguente:

sudo systemctl restart ssh
bash

Come trasmettere manualmente la vostra chiave SSH in Ubuntu

Lo strumento ssh-copy-id, descritto al secondo passaggio, non è disponibile su tutti i sistemi. In questo caso, è comunque possibile trasmettere la chiave pubblica generata al sistema di destinazione manualmente e con facilità nel modo seguente.

Per prima cosa, eseguite il comando seguente per visualizzare la chiave pubblica:

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

Copiate quindi la chiave risultante nel file “authorized_keys” presente nella cartella “ssh” sull’host di destinazione. Se la cartella non è ancora presente, createla con i comandi seguenti:

mkdir -p ~/.ssh
bash

Utilizzate quindi il comando seguente per trasmettere la chiave:

echo chiave >> ~/.ssh/authorized_keys
bash

Nel comando, al posto di “chiave”, inserite l’output precedentemente ottenuto partendo da “ssh-rsa”.

Nell’ultimo passaggio verificate di aver rimosso tutti i gruppi e tutte le ulteriori autorizzazioni per la cartella “ssh” e per il file “authorized_keys”:

chmod -R go= ~/.ssh
bash
Consiglio

Cercate ulteriori informazioni sugli argomenti “SSH” e “Ubuntu”? I seguenti articoli della Digital Guide potrebbero interessarvi:

Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.