Come creare e installare chiavi SSH dalla shell di Linux

Prendi sul serio la sicurezza informatica e utilizza le chiavi SSH per accedere agli accessi remoti. Sono un modo più sicuro per connettersi rispetto alle password. Ti mostriamo come generare, installare e utilizzare le chiavi SSH in Linux.

Cosa c’è di sbagliato con le password?

Secure Shell (SSH) è il protocollo crittografato utilizzato per accedere agli account utente su computer remoti Linux o Unix. In genere, tali account utente vengono protetti tramite password. Quando si accede a un computer remoto, è necessario fornire il nome utente e la password per l’account a cui si accede.

Le password sono il mezzo più comune per proteggere l’accesso alle risorse di elaborazione. Nonostante ciò, la sicurezza basata su password ha i suoi difetti. Le persone scelgono password deboli, condividono password, usano la stessa password su più sistemi e così via.

Le chiavi SSH sono molto più sicure e, una volta configurate, sono facili da usare quanto le password.

Cosa rende sicure le chiavi SSH?

Le chiavi SSH vengono create e utilizzate in coppia. Le due chiavi sono collegate e crittograficamente sicure. Una è la tua chiave pubblica e l’altra è la tua chiave privata. Sono legati al tuo account utente. Se più utenti su un singolo computer utilizzano chiavi SSH, ciascuno riceverà la propria coppia di chiavi.

La tua chiave privata viene installata nella tua cartella Inizio (di solito) e la chiave pubblica viene installata sul computer remoto, o sui computer, a cui dovrai accedere.

La tua chiave privata deve essere tenuta al sicuro. Se è accessibile ad altri, ti trovi nella stessa posizione come se avessero scoperto la tua password. Una precauzione sensata e altamente raccomandata è che la tua chiave privata venga crittografata sul tuo computer con un robusto frase d’accesso.

La chiave pubblica può essere condivisa liberamente senza alcun compromesso per la tua sicurezza. Non è possibile determinare quale sia la chiave privata da un esame della chiave pubblica. La chiave privata può crittografare i messaggi che solo la chiave privata può decrittografare.

Quando effettui una richiesta di connessione, il computer remoto utilizza la sua copia della tua chiave pubblica per creare un messaggio crittografato. Il messaggio contiene un ID di sessione e altri metadati. Solo il computer in possesso della chiave privata, il tuo computer, può decrittografare questo messaggio.

Il tuo computer accede alla tua chiave privata e decrittografa il messaggio. Quindi invia il proprio messaggio crittografato al computer remoto. Tra le altre cose, questo messaggio crittografato contiene l’ID di sessione ricevuto dal computer remoto.

Il computer remoto ora sa che devi essere chi dici di essere perché solo la tua chiave privata potrebbe estrarre l’ID di sessione dal messaggio che ha inviato al tuo computer.

Assicurati di poter accedere al computer remoto

Assicurati di poterti connettere in remoto e accedere al computer remoto. Ciò dimostra che il nome utente e la password hanno un account valido configurato sul computer remoto e che le credenziali sono corrette.

Non provare a fare nulla con le chiavi SSH finché non avrai verificato che puoi utilizzare SSH con password per connetterti al computer di destinazione.

In questo esempio, una persona con un account utente chiamato dave ha effettuato l’accesso a un computer chiamato howtogeek. Si collegheranno a un altro computer chiamato Sulaco.

Inseriscono il seguente comando:

ssh dave@sulaco

Viene richiesta la password, la immettono e si connettono a Sulaco. Il loro prompt della riga di comando cambia per confermarlo.

l'utente dave si è connesso a sulaco usando ssh e una password

Questa è tutta la conferma di cui abbiamo bisogno. Quindi l’utente dave può disconnettersi da Sulaco con il comando exit:

exit

utente dave disconnesso da sulaco

Ricevono il messaggio di disconnessione e il prompt della riga di comando torna a dave @ howtogeek.

Creazione di una coppia di chiavi SSH

Queste istruzioni sono state testate sulle distribuzioni Ubuntu, Fedora e Manjaro di Linux. In tutti i casi il processo era identico e non era necessario installare alcun nuovo software su nessuna delle macchine di prova.

Per generare le tue chiavi SSH, digita il seguente comando:

ssh-keygen

ssh-keygen in una finestra di terminale

Inizia il processo di generazione. Ti verrà chiesto dove desideri memorizzare le tue chiavi SSH. Premere il tasto Invio per accettare la posizione predefinita. Le autorizzazioni sulla cartella la proteggeranno solo per il tuo uso.

Conferma della posizione di archiviazione della chiave ssh in una finestra di terminale

Ti verrà ora chiesta una passphrase. Ti consigliamo vivamente di inserire una passphrase qui. E ricorda di cosa si tratta! Puoi premere Invio per non avere passphrase, ma questa non è una buona idea. Una passphrase composta da tre o quattro parole non collegate, messe insieme, creerà una passphrase molto robusta.

Richiedi la passphrase in una finestra del terminale

Ti verrà chiesto di inserire ancora una volta la stessa passphrase per verificare di aver digitato ciò che pensavi di aver digitato.

Le chiavi SSH vengono generate e archiviate per te.

Generazione delle chiavi completata e arte casuale visualizzata in una finestra di terminale

È possibile ignorare il “randomart” visualizzato. Alcuni computer remoti potrebbero mostrarti la loro arte casuale ogni volta che ti connetti. L’idea è che riconoscerai se la grafica casuale cambia e sarai sospettoso della connessione perché significa che le chiavi SSH per quel server sono state alterate.

Installazione della chiave pubblica

Dobbiamo installare la tua chiave pubblica su Sulaco, il computer remoto, in modo che sappia che la chiave pubblica ti appartiene.

Lo facciamo usando il comando ssh-copy-id. Questo comando effettua una connessione al computer remoto come il normale comando ssh, ma invece di consentire l’accesso, trasferisce la chiave SSH pubblica.

ssh-copy-id dave@sulaco

ssh-copy-id dave @ sulaco

Anche se non stai accedendo al computer remoto, devi comunque autenticarti utilizzando una password. Il computer remoto deve identificare a quale account utente appartiene la nuova chiave SSH.

Nota che la password che devi fornire qui è la password dell’account utente a cui stai effettuando l’accesso. Questa non è la passphrase che hai appena creato.

ssh-copy-id con richiesta password in una finestra di terminale

Quando la password è stata verificata, ssh-copy-id trasferisce la tua chiave pubblica al computer remoto.

Si torna al prompt dei comandi del computer. Non sei lasciato connesso al computer remoto.

chiave pulic trasferita con successo in una finestra di terminale

Connessione tramite chiavi SSH

Seguiamo il suggerimento e proviamo a connetterci al computer remoto.

ssh dave@sulaco

ssh dave @ sulaco in una finestra di terminale

Poiché il processo di connessione richiederà l’accesso alla tua chiave privata e poiché hai protetto le tue chiavi SSH dietro una passphrase, dovrai fornire la tua passphrase in modo che la connessione possa procedere.

finestra di dialogo richiesta passphrase

Inserisci la tua passphrase e fai clic sul pulsante Sblocca.

Una volta inserita la passphrase in una sessione terminale, non sarà necessario inserirla di nuovo finché la finestra del terminale è aperta. Puoi connetterti e disconnetterti da tutte le sessioni remote che desideri, senza inserire nuovamente la tua passphrase.

Puoi selezionare la casella di controllo per l’opzione “Sblocca automaticamente questa chiave ogni volta che effettuo l’accesso”, ma ridurrà la tua sicurezza. Se lasci il tuo computer incustodito, chiunque può connettersi ai computer remoti che hanno la tua chiave pubblica.

Una volta inserita la passphrase, sarai connesso al computer remoto.

connessione al computer remoto in una finestra di terminale

Per verificare ancora una volta il processo end to end, disconnettersi con il comando exit e riconnettersi al computer remoto dalla stessa finestra del terminale.

ssh dave@sulaco

connessione e disconnessione della chiave ssh in una finestra di terminale

Sarai connesso al computer remoto senza bisogno di password o passphrase.

Nessuna password, ma maggiore sicurezza

Gli esperti di sicurezza informatica parlano di una cosa chiamata attrito di sicurezza. Questo è il piccolo dolore che devi sopportare per ottenere il guadagno di sicurezza aggiuntiva. Di solito sono necessari uno o due passaggi aggiuntivi per adottare un metodo di lavoro più sicuro. E alla maggior parte delle persone non piace. In realtà preferiscono una sicurezza inferiore e la mancanza di attrito. Questa è la natura umana.

Con le chiavi SSH, ottieni maggiore sicurezza e maggiore comodità. Questo è decisamente vantaggioso per tutti.