Accedere ad una macchina Linux in Azure tramite SSH da Windows
Per collegarsi ad una Azure VM Linux è possibile utilizzare metodi differenti, come ad esempio una combinazione di username e password oppure l’utilizzo di chiavi SSH. In questa guida mostrerò come connettersi ad una macchina Linux ospitata in Azure da un computer Windows e utilizzando una coppia di chiavi SSH.
Ci sono diversi vantaggi nell’utilizzare una coppia di chiavi SSH per l’accesso ad una VM Azure:
- Sicurezza: le chiavi SSH offrono un livello di sicurezza molto elevato rispetto alle password. Le chiavi SSH sono costituite da due parti, una chiave pubblica e una chiave privata. La chiave privata deve essere tenuta segreta e protetta, mentre la chiave pubblica può essere distribuita liberamente. Quando si accede ad una VM Azure, viene richiesta la chiave privata per autenticarsi, il che rende molto difficile per un utente non autorizzato accedere alla VM.
- Facilità di gestione: l’utilizzo di una coppia di chiavi SSH semplifica notevolmente la gestione degli accessi alle VM. Invece di dover gestire le password per ogni utente, è sufficiente distribuire le chiavi pubbliche alle persone autorizzate ad accedere alle VM. Inoltre, è possibile revocare l’accesso in qualsiasi momento semplicemente rimuovendo la chiave pubblica dalla VM.
- Automazione: l’utilizzo delle chiavi SSH permette anche l’automazione di alcune operazioni. Ad esempio, è possibile utilizzare le chiavi SSH per automatizzare il provisioning di nuove VM, senza dover interagire manualmente con ogni nuova VM per configurare gli account degli utenti.
- Scalabilità: l’utilizzo delle chiavi SSH rende facile scalare l’accesso alle VM. Aggiungendo o rimuovendo chiavi pubbliche, è possibile consentire o revocare l’accesso a diverse persone in modo rapido e facile. Inoltre, le chiavi SSH possono essere utilizzate anche per l’accesso a più VM, semplificando la gestione degli accessi.
Al momento della creazione della VM viene chiesto che modalità di autenticazione utilizzare. Azure genera automaticamente una coppia di chiavi e permette di conservarle per poterle successivamente realizzare. Questo è il metodo più veloce, semplice e sicuro per permettere una connessione alla Azure VM.
Come si può vedere dalle figure sotto, io ho scelto inizialmente di far creare ad Azure una coppia di chiavi SSH.
Figura 1: Modalità di autenticazione disponibili per l’utilizzo delle chiavi SSH per l’autenticazione alla macchine virtuali Linux
Figura 2: Scelta della generazione della coppia di chiavi affidata ad Azure
Al termine del wizard di creazione della Linux VM verrà chiesto di scaricare la chiave privata, da utilizzare per la connessione alla macchina. Nel portale di Azure verrà creata infatti una risorsa per la chiave pubblica, mentre non verrà mai conservata la chiave privata della coppia di chiavi creata.
Figura 3: Richiesta di download della chiave privata da utilizzare per le connessioni SSH alla Azure Linux VM
Salvate la chiave privata sul vostro computer Windows. La chiave sarà un file .pem. Il file .pem è un contenitore che al suo interno può celare uno o più certificati, oppure chiavi crittografiche pubbliche e private.
Figura 4: File .pem che contiene la chiave privata delal coppia di chiavi generata da Azure
Nel portale di Azure potrete notare che è stata creata una risorsa di tipo SSH Key che contiene la chiave pubblica che è stata installata nella Azure Linux VM che abbiamo appena creato.
Figura 5: Risorsa SSH Key con la chiave pubblica installata nella Azure Linux VM
Figura 6: Contenuto della risorsa SSH Key
Per collegarsi alla Azure Linux VM è sufficiente usare un prompt dei comandi o un prompt di PowerShell e digitare ssh user@host -i path_to_private_key. Nel mio caso ho digitato il comando ssh [email protected] -i “C:\Users\nicola ferrini\OneDrive – Nicola Ferrini 365\Documents\Produzione\LinuxVM01_key.pem”
Come si può vedere dalla figura sotto, ho ottentuto un errore di connessione perché il file .pem che contiene la chiave privata non è abbastanza protetto.
Figura 7: Errore di connessione perché il file .pem che contiene la chiave privata non è abbastanza protetto
È quindi necessario modificare le proprietà di sicurezza del file .pem assicurandosi che:
- Il proprietario del file sia l’utente con cui siete loggati in Windows
- L’utente con cui siete collegati in Windows sia l’unico ad avere controllo completo sul file
Nelle figure sotto viene mostrato come modificare i permessi.
Figura 8: Controllo sulla proprietà del file e disabilitazione dell’ereditarietà dei permessi
Figura 9: L’utente con cui siete loggati deve avere controllo compketo sul file .pem
Figura 10: Controllo finale sui permessi del file .pem
Figura 11: Conferma dei permessi del file .pem
A questo punto se proverete a ricollegarvi alla VM tramite SSH riuscirete ad autenticarvi senza problemi.
Figura 12: Connessione alla Azure Linux VM avvenuta con successo
La risorsa Azure che contiene la chiave pubblica può essere riutilizzata per connettersi anche ad altre macchine virtuali Linux.
Figura 13: Riutilizo di una chiave SSH esistente
Così come per le macchine Windows, anche per le macchine Linux è possibile resettare la password. Nel nostro caso sarà possibile resettare la chiave pubblica utilizzata dall’utente a cui vogliamo resettare le credenziali di accesso.
Figura 14: Reset delle credenziali di accesso e della chiave pubbblica SSH
È possibile creare una chiave SSH pubblica, da poter successivamente riutilzizare, come risorsa di Azure. Dal portale di Azure vi basterà infatti cercare la voce SSH Keys.
Figura 15: Creazione di una nuova chiave pubblica dal portale di Azure
Figura 16: Sorgenti della chiave pubblica disponibli
Potete far creare ad Azure la coppia di chiavi e poi scaricare la chiave privata, come fatto prima al momento della creazione della nuova Linux VM oppure potete creare sul vostro computer la coppia di chiavi utilizzando il PuTTY Key Generator. Questo strumento è disponibile quando installate PuTTY, scaricabile dal link https://www.ssh.com/ssh/putty/download
NOTA: Azure utilizza solo chiavi RSA a 2048 bit
Figura 17: Gennerazione della coppia di chiavi su computer Windows utilizznado lo strumento PuTTY Key Generator
Figura 18: Coppia di chiavi generata dal PuTTy Key Generator
Se provate a salvare la chiave privata PuTTY Key Generator la salverà nel suo formato PPK. Utilizzate il menu Conversions > Export OpenSSH key per salvare in formato .PEM
Figura 19: Esportazione della chiave privata in formato PEM
NOTA: Ovviamente, come abbiamo fatto prima, per utilizzare la chiave privata sarà necessario modificare i permessi di accesso dal tab Security.
Figura 20: Chiave salvata con il formato PEM
Caricate la chiave pubblica generata dal PuTTY Key Generator nel portale di Azure.
Figura 21: Importazione della chiave pubblica nel portale di Azure
Figura 22: Chiave SSH creata nel portale di Azure
Conclusioni
L’utilizzo di una coppia di chiavi SSH per l’accesso alle VM Azure rappresenta una scelta vincente in termini di sicurezza, facilità di gestione e scalabilità. Le chiavi SSH offrono un livello di sicurezza superiore rispetto alle password, semplificano la gestione degli accessi eliminando la necessità di gestire le password per ogni utente e consentono l’automazione di alcune operazioni. Inoltre, le chiavi SSH permettono di scalare facilmente l’accesso a diverse VM, rendendo più semplice e veloce l’aggiunta o la rimozione degli utenti autorizzati ad accedere alle VM.