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.
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.
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.
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:
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
bashSe 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.
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:
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
bashSe 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.
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
bashNel file di configurazione, cercate la voce “PasswordAuthentication” e impostatela su “no”.
Salvate le modifiche al file di configurazione e avviate quindi il servizio SSH con il comando seguente:
sudo systemctl restart ssh
bashCome 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
bashCopiate 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
bashUtilizzate quindi il comando seguente per trasmettere la chiave:
echo chiave >> ~/.ssh/authorized_keys
bashNel 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
bashCercate ulteriori informazioni sugli argomenti “SSH” e “Ubuntu”? I seguenti articoli della Digital Guide potrebbero interessarvi: