Esercizio - Scegliere un metodo di autenticazione per SSH

Prima di poter creare una macchina virtuale Linux in Azure, è necessario riflettere sull'accesso remoto. Occorre essere in grado di accedere al server Web Linux per configurare il software ed eseguire la manutenzione. L'approccio predefinito per amministrare le macchine virtuali Linux ospitate in Azure è SSH.

Che cos'è SSH?

SSH (Secure Shell) è un protocollo per connessioni crittografate che consente accessi protetti su connessioni non sicure. SSH consente di connettersi alla shell di un terminale da una posizione remota tramite una connessione di rete.

Per autenticare una connessione SSH è possibile usare due approcci: nome utente e password o una coppia di chiavi SSH.

Anche se SSH assicura una connessione crittografata, l'uso di password con le connessioni SSH rende vulnerabile la macchina virtuale agli attacchi di forza bruta delle password. Un metodo più sicuro e preferito per la connessione a una macchina virtuale Linux tramite SSH è l'uso di una coppia di chiavi pubblica-privata, anche note come chiavi SSH.

Con una coppia di chiavi SSH è possibile accedere alle macchine virtuali di Azure basate su Linux senza una password. Si tratta di un approccio più sicuro, se si intende accedere alla macchina virtuale solo da pochi computer. Se è necessario essere in grado di accedere alla macchina virtuale Linux da svariate posizioni, una combinazione di nome utente e password potrebbe essere un approccio migliore. Esistono due parti di una coppia di chiavi SSH: una chiave pubblica e una chiave privata.

  • La chiave pubblica viene posizionata nella macchina virtuale Linux o in qualsiasi altro servizio che si vuole usare con la crittografia a chiave pubblica. Questa chiave può essere condivisa con chiunque.

  • La chiave privata è quella che si presenta per verificare la propria identità alla macchina virtuale Linux quando si stabilisce una connessione SSH. Considerare questa chiave come un'informazione riservata e proteggerla come si farebbe con una password o altri dati privati.

È possibile usare la stessa singola coppia di chiavi pubblica e privata per accedere a più macchine virtuali e servizi di Azure.

Creare la coppia di chiavi SSH

In Linux, Windows 10 e macOS è possibile usare il comando ssh-keygen predefinito per generare i file di chiave pubblica e privata SSH.

Windows 10 include un client SSH con Fall Creators Update. Le versioni precedenti di Windows richiedono software aggiuntivo per usare SSH. Vedere la documentazione per i dettagli completi. In alternativa, è possibile installare il sottosistema Linux per Windows e ottenere la stessa funzionalità.

Si userà Azure Cloud Shell che archivia le chiavi generate in Azure nell'account di archiviazione privato. È anche possibile digitare questi comandi direttamente nella shell locale se si preferisce. Sarà necessario adattare le istruzioni in tutto il modulo a una sessione locale, se si adotta questo approccio.

Ecco il comando minimo necessario per generare la coppia di chiavi per una macchina virtuale di Azure. Viene creata una coppia di chiavi pubblica-privata RSA SSH-2. La lunghezza minima è 2048, ma ai fini di questo modulo di apprendimento verrà usato il valore 4096.

  1. Eseguire il comando seguente nella Cloud Shell.

    ssh-keygen -m PEM -t rsa -b 4096
    
  2. Premere invio per accettare il percorso predefinito. Il comando crea due file, id_rsa e id_rsa.pub, nella directory ~/.ssh. I file vengono sovrascritti se esistono.

  3. Immettere una passphrase da ricordare. Questa passphrase sarà necessaria quando si userà la chiave SSH per accedere alla macchina virtuale.

Sono disponibili diverse opzioni che è possibile usare per specificare il nome del file o una passphrase ed evitare le richieste.

Passphrase per la chiave privata

È anche possibile specificare una passphrase durante la generazione della chiave privata. Si tratta di una password che è necessario immettere quando si usa la chiave. Questa passphrase viene usata per accedere al file della chiave SSH privata e non è la password dell'account utente.

Quando si aggiunge una passphrase alla chiave SSH, la chiave privata viene crittografata con AES a 128 bit in modo che sia inutilizzabile senza la passphrase per decrittografarla.

L'aggiunta di una passphrase è fortemente consigliata. Se un utente malintenzionato rubasse una chiave privata priva di passphrase, potrebbe usarla per accedere ai server che hanno la chiave pubblica corrispondente. Se la chiave privata è protetta da una passphrase, l'utente malintenzionato non potrà usarla. Si tratta di un livello di sicurezza aggiuntivo per l'infrastruttura in Azure.

Usare la coppia di chiavi SSH con una macchina virtuale Linux di Azure

Dopo aver generato la coppia di chiavi, è possibile usarla con una macchina virtuale Linux in Azure. È possibile fornire la chiave pubblica durante la creazione della macchina virtuale o aggiungerla dopo aver creato la macchina virtuale.

È possibile visualizzare il contenuto del file in Azure Cloud Shell eseguendo il comando seguente.

cat ~/.ssh/id_rsa.pub

Sarà simile all'output seguente:

ssh-rsa XXXXXXXXXXc2EAAAADAXABAAABAXC5Am7+fGZ+5zXBGgXS6GUvmsXCLGc7tX7/rViXk3+eShZzaXnt75gUmT1I2f75zFn2hlAIDGKWf4g12KWcZxy81TniUOTjUsVlwPymXUXxESL/UfJKfbdstBhTOdy5EG9rYWA0K43SJmwPhH28BpoLfXXXXXGX/ilsXXXXXKgRLiJ2W19MzXHp8z3Lxw7r9wx3HaVlP4XiFv9U4hGcp8RMI1MP1nNesFlOBpG4pV2bJRBTXNXeY4l6F8WZ3C4kuf8XxOo08mXaTpvZ3T1841altmNTZCcPkXuMrBjYSJbA8npoXAXNwiivyoe3X2KMXXXXXdXXXXXXXXXXCXXXXX/ azureuser@myserver

Copiare questo valore per poterlo usare nel prossimo esercizio.

Usare la chiave SSH durante la creazione di una macchina virtuale Linux

Per applicare la chiave SSH durante la creazione di una nuova macchina virtuale Linux, sarà necessario copiare il contenuto della chiave pubblica e specificarlo nel portale di Azure oppure specificare il file di chiave pubblica per il comando dell'interfaccia della riga di comando di Azure o di Azure PowerShell. Si userà questo approccio durante la creazione della macchina virtuale Linux.

Aggiungere la chiave SSH a una macchina virtuale Linux esistente

Se è già stata creata una macchina virtuale, è possibile installare la chiave pubblica nella macchina virtuale Linux con il comando ssh-copy-id. Dopo che la chiave è stata autorizzata per SSH, concede l'accesso al server senza una password, anche se ne viene comunque richiesta la passphrase sulla chiave se ne viene impostata una.

Ad esempio, se si dispone di una macchina virtuale Linux denominata MyServer con un utente azureuser, è possibile eseguire il comando seguente per installare il file di chiave pubblica e autorizzare l'utente con la chiave.

ssh-copy-id -i ~/.ssh/id_rsa.pub azureuser@myserver

Dopo avere ottenuto la chiave pubblica, è possibile passare al portale di Azure e creare una macchina virtuale Linux.