Come usare le chiavi SSH con Windows in Azure

Si applica a: ✔️ macchine virtuali Linux ✔️ set di scalabilità flessibili

Questo articolo è destinato agli utenti di Windows che vogliono creare e usare chiavi SSH (Secure Shell ) per connettersi alle macchine virtuali Linux in Azure. È anche possibile generare e archiviare chiavi SSH nel portale di Azure da usare durante la creazione di macchine virtuali nel portale.

Per usare le chiavi SSH da un client Linux o macOS, vedere i passaggi rapidi. Per una panoramica più dettagliata di SSH, vedere Procedura dettagliata: Creare e gestire chiavi SSH per l'autenticazione in una VM Linux di Azure.

Panoramica di SSH e delle chiavi

SSH è un protocollo per connessioni crittografate che consente accessi protetti su connessioni non sicure. SSH è il protocollo di connessione predefinito per le macchine virtuali Linux ospitate in Azure. Sebbene SSH stesso fornisca una connessione crittografata, l'uso di password con SSH lascia comunque la macchina virtuale vulnerabile agli attacchi di forza bruta. È consigliabile connettersi a una macchina virtuale tramite SSH usando una coppia di chiavi pubblica-privata, nota anche come chiavi SSH.

La coppia di chiavi pubblica-privata è come una serratura per una porta di ingresso. Il lucchetto viene esposto al pubblico, chiunque abbia la chiave giusta può aprire la porta. La chiave è privata e viene assegnata solo alle persone attendibili perché può essere usata per sbloccare la porta.

  • La chiave pubblica viene inserita nella macchina virtuale Linux quando si crea la macchina virtuale.

  • La chiave privata rimane nel sistema locale. Sulla chiave privata è necessario mantenere la massima riservatezza, Non condividerla.

Quando ci si connette alla macchina virtuale Linux, la macchina virtuale testa il client SSH per assicurarsi che abbia la chiave privata corretta. In caso positivo, al client viene concesso il diritto di accesso alla macchina virtuale.

A seconda dei criteri di sicurezza dell'organizzazione, è possibile riutilizzare una singola coppia di chiavi per accedere a più VM e servizi di Azure. Non è necessaria una coppia separata di chiavi per ogni macchina virtuale.

La chiave pubblica può essere condivisa con chiunque, ma la chiave privata appartiene solo all'utente o all'infrastruttura di sicurezza locale.

Formati di chiave SSH supportati

Attualmente Azure supporta il protocollo SSH 2 (SSH-2) e le coppie di chiavi pubblica e privata basate su RSA con una lunghezza minima di 2.048 bit. Altri formati di chiave, ad esempio ED25519 ed ECDSA, non sono supportati.

Client SSH

Le versioni recenti di Windows 10 includono comandi client OpenSSH per creare e usare chiavi SSH e stabilire connessioni SSH da PowerShell o da un prompt dei comandi.

È anche possibile usare Bash in Azure Cloud Shell per connettersi alla macchina virtuale. È possibile usare Cloud Shell in un Web browser, dal portale di Azure o come terminale in Visual Studio Code usando l'estensione Account di Azure.

È anche possibile installare il sottosistema Windows per Linux per connettersi alla macchina virtuale tramite SSH e usare altri strumenti Linux nativi all'interno di una shell Bash.

Creare una coppia di chiavi SSH

Il modo più semplice per creare e gestire le chiavi SSH consiste nell'usare il portale per crearle e archiviarle per il riutilizzo.

È anche possibile creare coppie di chiavi con l'interfaccia della riga di comando di Azure con il comando az sshkey create, come descritto in Generare e archiviare chiavi SSH.

Per creare una coppia di chiavi SSH nel computer locale usando il comando ssh-keygen da PowerShell o da un prompt dei comandi, digitare il comando seguente:

ssh-keygen -m PEM -t rsa -b 2048

Immettere un nome file oppure usare l'impostazione predefinita visualizzata tra parentesi (ad esempio C:\Users\username/.ssh/id_rsa). Immettere una passphrase per il file o lasciare vuota la passphrase se non la si vuole usare.

Creare una macchina virtuale usando la chiave

Per creare una macchina virtuale Linux che usa chiavi SSH per l'autenticazione, specificare la chiave pubblica SSH durante la creazione della macchina virtuale.

Usando l'interfaccia della riga di comando di Azure, si specificano il percorso e il nome file per la chiave pubblica usando az vm create e il parametro --ssh-key-value.

az vm create \
   --resource-group myResourceGroup \
   --name myVM \
   --image Ubuntu2204\
   --admin-username azureuser \
   --ssh-key-value ~/.ssh/id_rsa.pub

Con PowerShell usare New-AzVM e aggiungere la chiave SSH alla configurazione della macchina virtuale usando . Ad esempio, vedere Guida introduttiva: creare una macchina virtuale Linux in Azure con PowerShell.

Se si eseguono molte distribuzioni usando il portale, è possibile caricare la chiave pubblica in Azure e selezionarla facilmente durante la creazione di una macchina virtuale dal portale. Per altre informazioni, vedere Caricare una chiave SSH.

Connettersi alla macchina virtuale

Con la chiave pubblica distribuita nella VM di Azure e la chiave privata nel sistema locale, stabilire una connessione SSH alla VM usando l'indirizzo IP o il nome DNS della VM. Sostituire azureuser e 10.111.12.123 nel comando seguente con il nome utente amministratore, l'indirizzo IP (o il nome di dominio completo) e il percorso della chiave privata:

ssh -i ~/.ssh/id_rsa azureuser@10.111.12.123

Se non ci si è mai connessi a questa macchina virtuale, verrà chiesto di verificare l'impronta digitale degli host. Può sembrare una buona idea accettare l'impronta digitale presentata, ma ciò esporrà a possibili attacchi "man in the middle". È consigliabile convalidare sempre l'impronta digitale degli host. Questa operazione deve essere eseguita solo la prima volta che ci si connette da un client. Per ottenere l'impronta digitale dell'host tramite il portale, usare il comando Esegui con il comando seguente: ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}'.

Screenshot showing using the Run Command to validate the host fingerprint.

Per eseguire il comando tramite l'interfaccia della riga di comando, usare il comando az vm run-command invoke.

Se è stata configurata una passphrase alla creazione della coppia di chiavi, immettere la passphrase quando richiesto.

Se la macchina virtuale usa i criteri di accesso JIT, è necessario richiedere l'accesso per connettersi alla macchina virtuale. Per altre informazioni sui criteri JIT, vedere Gestire l'accesso alle macchine virtuali con la funzionalità JIT (Just-in-Time).

Passaggi successivi