Oltre all'autenticazione tramite nome utente e password, SSH supporta l'uso di una chiave asimmetrica (volgarmente detta "chiave SSH"). Adottando questa modalità, non dobbiamo più digitare la password prima di accedere ai server remoti, poiché ci facciamo riconoscere tramite un file segreto, che contiene la nostra chiave crittografica. Questo approccio ha molteplici vantaggi: da un lato, ci evita la scocciatura di dover digitare la password nel terminale ad ogni connessione, dall'altra innalza drasticamente il livello di sicurezza, poiché la chiave è pressoché impossibile da falsificare e molto più difficile da sottrarre. Vediamo allora come creare una chiave SSH da PC Windows, Linux, Mac

In questo articolo ci concentreremo, nello specifico, sulla procedura per generare una chiave SSH su PC, e vedremo come caricarla sul server di modo da autorizzare l'accesso senza password. Per maggiori informazioni sull'uso generale di SSH:

» Leggi: SSH con Windows, Linux, Mac: la Guida Definitiva

[guida] Come creare chiave SSH PC Windows, Linux, Mac accedere server senza password (video) - SSH con chiave spotlight

Chiave SSH: cosa è, come funziona

Una "chiave SSH" è un file, creato sul nostro PC tramite un apposito comando. Detta chiave viene poi autorizzata alla connessione sui server SSH ai quali dobbiamo accedere. In questo modo, il server remoto ci permette di accedere direttamente, senza password, poiché riconosce la nostra chiave.

Per configurare tutto quanto procederemo in questo modo:

  1. generare una chiave SSH (un file) sul PC locale Windows, Linux, Mac
  2. caricare il file-chiave sul server al quale desideriamo accedere in SSH
  3. connettersi al server con la chiave SSH (senza password)

[guida] Come creare chiave SSH PC Windows, Linux, Mac accedere server senza password (video) - diagram ssh key rsa

Pratico, efficace, estremamente sicuro. Procediamo!

Chiave SSH, Passo "zero": Aprire il Terminale

Iniziamo aprendo il Terminale:

Alcune note per gli utenti Windows:

  1. i comandi ssh-keygen, scp e ssh che utilizzeremo fra poco sono integrati nativamente su Windows 10 1709 (vecchia versione di settembre 2017) e successive, comprese tutte le build di Windows 11
  2. in ogni caso, potrebbe essere utile aggiornare SSH all'ultima versione disponibile (l'update non è sempre automatico)
  3. chi utilizzasse ancora Windows 8 oppure Windows 7 deve seguire quest'altra procedura: Accedere con PuTTY (SSH) senza password a Linux/Ubuntu/CentOS

Chiave SSH, Passo 1: Generare una chiave SSH sul PC locale

Impartiamo questo comando nel Terminale per avviare la generazione della nostra chiave SSH:

ssh-keygen

Ci viene così richiesto di indicare il percorso nel quale salvare la chiave: a meno di necessità speciali, è raccomandabile battere semplicemente Invio per usare il percorso proposto di default, ovvero la cartella .ssh all'interno della "home" dell'utente corrente (la cartella verrà creata automaticamente, se non esiste). Raccomando caldamente di usare il percorso di default: così facendo, la chiave verrà usata automaticamente quando necessario, senza bisogno di configurazioni aggiuntive

[guida] Come creare chiave SSH PC Windows, Linux, Mac accedere server senza password (video) - zShotVM_1610876175

Sì, Windows mostra un percorso bislacco composto da un misto di barre in avanti (/, slash) e barre inverse (\, backslash). È normale così.

Al passo successivo siamo chiamati a digitare una password per proteggere la nostra chiave. Se scegliamo di farlo, dovremo poi digitare detta password ogni volta che vorremo usare la chiave: a meno di situazioni veramente critiche, battiamo semplicemente due volte Invio per procedere senza password

[guida] Come creare chiave SSH PC Windows, Linux, Mac accedere server senza password (video) - zShotVM_1610876205

Una nota importante: se procediamo in questo modo, viene creato un file-chiave senza password. Chiunque riuscisse a rubarci tale file potrà accedere in SSH ai nostri server, senza nessun ostacolo. In caso il file-chiave fosse stato protetto da password, invece, il ladro non avrebbe potuto usarlo senza conoscere anche la relativa password. Creare una chiave senza password è dunque un potenziale rischio... da mitigare alzando al massimo il proprio livello di attenzione, per non farsi rubare il file-chiave in prima battuta!

La procedura è così terminata. Il comando mostra alcune informazioni e conferma che il file-chiave è stato creato nel percorso scelto che, ricordiamolo, è la cartella .ssh all'interno della "home" dell'utente corrente

[guida] Come creare chiave SSH PC Windows, Linux, Mac accedere server senza password (video) - zShotVM_1610876302

Il comando ssh-keygen crea due file distinti:

  1. id_rsa: è la componente segreta della chiave - non deve mai lasciare il nostro PC, né essere comunicata a nessuno!
  2. id_rsa.pub: è la componente pubblica - deve essere caricata sul server e può essere tranquillamente inviata a chiunque ce la chieda, o persino resa pubblica su Internet

Possiamo pensare al file id_rsa.pub come ad un "lucchetto" che protegge e blocca l'accesso al server. Chiunque possieda la relativa chiave associata (il file id_rsa) potrà "aprire il lucchetto" ed entrare sul server

[guida] Come creare chiave SSH PC Windows, Linux, Mac accedere server senza password (video) - diagram ssh key rsa

Questo è il motivo per cui, si diceva, il file id_rsa deve rimanere sempre assolutamente privato.

Chiave SSH, Passo 2: Caricare il file id_rsa.pub sul server al quale desideriamo connetterci in SSH

Ora dobbiamo concretamente caricare il "lucchetto" (file id_rsa.pub) sul server al quale desideriamo accedere tramite la nostra chiave. Il modo più rapido di farlo? Eccolo qua:

  1. aprire con Blocco note il file id_rsa.pub sul PC locale
  2. copiare il contenuto
  3. collegarsi in SSH al server desiderato digitando, per l'ultima volta, la password di autenticazione
  4. creare la cartella dedicata se già non esiste: mkdir "$HOME/.ssh"
  5. aprire il file dedicato: nano "$HOME/.ssh/authorized_keys"
  6. incollare alla fine del file la chiave appena copiata sul PC locale
  7. battere Ctrl+O, Invio, Ctrl+X per uscire

[guida] Come creare chiave SSH PC Windows, Linux, Mac accedere server senza password (video)

ATTENZIONE! Prestate attenzione a copiare proprio il contenuto del file con estensione .pub e non quello senza estensione, che costituisce la chiave privata e segreta da custodire solo sul proprio PC!

Abbiamo finito: possiamo disconnetterci dal server.

Chiave SSH, Passo 3: Connettersi al server con la chiave SSH

Siamo dunque pronti a connetterci al server utilizzando la nostra chiave SSH! Il comando è sempre lo stesso:

ssh nomeUtente@server.com

La differenza sta nel fatto che, se la configurazione è stata svolta correttamente, ci ritroviamo immediatamente connessi e pronti a lavorare, senza bisogno di digitare la password

[guida] Come creare chiave SSH PC Windows, Linux, Mac accedere server senza password (video) - zShotVM_1610898115

Complimenti, è tutto!

Chiave SSH, Passo 4: Autorizzare un altro PC

La chiave SSH che abbiamo appena generato e autorizzato sul server ci consente di collegarci da questo specifico computer. Ma... come fare se desideriamo connetterci anche da un altro PC?

Una prima idea è quella di copiare la cartella .ssh dalla "home" del PC sul quale abbiamo generato la chiave e riportarla su tutti gli altri PC. Così facendo, non c'è altro da configurare e tutto funziona immediatamente, poiché tutti i PC dispongono della stessa, medesima chiave privata del primo.

In verità, però, questa pratica è sconsigliata, per motivi di sicurezza: come detto, la chiave privata non dovrebbe mai lasciare il PC sul quale è stata generata.

La modalità "corretta" prevede di generare una chiave SSH distinta su ogni PC, quindi accordarla alla lista di quelle autorizzate. La procedura è esattamente la stessa vista nei passaggi precedenti:

  1. generare una nuova chiave sul secondo PC con ssh-keygen
  2. copiare il contenuto del file id_rsa.pub sul server remoto tramite
  3. incollare la chiave sul server remoto, in coda al file $HOME/.ssh/authorized_keys
  4. collegarsi senza password, anche dal secondo PC

Ripetere per ogni computer che utilizziamo e il gioco è fatto.

Chiave SSH, Passo 5: Autorizzare un altro utente

Seguendo la procedura appena descritta, abbiamo autorizzato alla connessione tramite chiave SSH il nostro utente, magari da più PC, con chiavi diverse. Benissimo!

Ma... come fare per consentire ad un'altra persona di collegarsi anch'essa in SSH senza chiave? Se il collega dispone già di un accesso SSH al server in questione, siamo nella situazione più facile: basta invitare il collega a svolgere, sul proprio PC, la stessa, identica procedura che abbiamo seguito poco fa!

[guida] Come creare chiave SSH PC Windows, Linux, Mac accedere server senza password (video) - ubuntu linux useradd

Se però siamo chiamati ad intervenire noi al suo posto, dobbiamo (nell'ordine):

  1. chiedere al collega di generare la propria chiave SSH, sul suo PC, tramite il comando ssh-keygen
  2. chiedere al collega di passarci il file id_rsa.pub così generato, tramite email, chat, pastebin o quant'altro. Attenzione! Spieghiamo bene al collega che deve inviarci il file con estensione .pub, che è pubblico, mentre dovrà custodire privatamente l'altro, id_rsa senza estensione!
  3. collegarci al server SSH sul quale dovrà poi accedere il collega
  4. creare un account per il collega sul server
  5. prendere in prestito l'account appena creato: sudo -u nomeCollega -H bash

Da qui, basta seguire la procedura già indicata in precedenza per accodare la chiave nella cartella $HOME/.ssh del collega.

Ora è tutto pronto! Possiamo chiedere al collega di collegarsi e confermarci che non gli venga più richiesta la password.

Chiave SSH, Passo 6: Disabilitare il login SSH con password

Terminata questa configurazione e dopo aver verificato che tutto funzioni correttamente, possiamo fare un passo in avanti importante per la sicurezza: disabilitare completamente l'accesso SSH tramite password. In questo modo, il server SSH consentirà l'accesso solo a chi detiene una chiave autorizzata. Tutti gli altri non riceveranno più nemmeno l'invito ad inserire la password, ma verranno respinti immediatamente con un messaggio di errore. Abbiamo visto come fare qui:

» Leggi: SSH: impedire il login tramite password (Linux/Ubuntu/CentOS)

[guida] Come creare chiave SSH PC Windows, Linux, Mac accedere server senza password (video) - putty key refused no password spotlight

Conclusioni

In questa guida abbiamo visto come creare e utilizzare le chiavi SSH. Personalmente, utilizzo questa strategia su TUTTI i server che gestisco e, quando possibile, provvedo senza indugio a disattivare l'accesso SSH tramite password, di modo da ottenere un importante innalzamento del livello di sicurezza.