Come usare le chiavi SSH con Windows in Azure
Si applica a: ✔️ Set di scalabilità flessibili di macchine virtuali ✔️ Linux
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 le 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 la procedura rapida. Per una panoramica più dettagliata di SSH, vedere Procedura dettagliata: Creare e gestire chiavi SSH per l'autenticazione in una macchina virtuale Linux in Azure.
Panoramica di SSH e delle chiavi
SSH è un protocollo di connessione crittografato che consente accessi sicuri su connessioni non protette. SSH è il protocollo di connessione predefinito per le macchine virtuali Linux ospitate in Azure. Anche se SSH fornisce 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 è simile al blocco sulla porta principale. La serratura è esposta al pubblico, chiunque abbia la chiave giusta può aprire la porta. La chiave è privata e assegnata solo alle persone che si fidano 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 condividerlo.
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ù macchine virtuali e servizi di Azure. Non è necessaria una coppia separata di chiavi per ogni macchina virtuale.
La chiave pubblica può essere condivisa con chiunque, ma solo l'utente (o l'infrastruttura di sicurezza locale) deve avere accesso alla chiave privata.
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 nel Cloud Shell di Azure 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 crearli e archiviarli 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 ssh-keygen
comando di PowerShell o 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 oppure lasciare vuota la passphrase se non si vuole usare una passphrase.
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, è possibile specificare il percorso e il nome file per la chiave pubblica usando az vm create
e il --ssh-key-value
parametro .
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image UbuntuLTS\
--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". Per un esempio, vedere Avvio rapido: Creare una macchina virtuale Linux in Azure con PowerShell.
Se si eseguono molte distribuzioni usando il portale, è possibile caricare la chiave pubblica in Azure, in cui è possibile 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 è mai stata eseguita la connessione a questa macchina virtuale prima di essere richiesto di verificare l'impronta digitale degli host. È tentata di accettare l'impronta digitale presentata, ma questo ti espone a una persona possibile nell'attacco centrale. È sempre consigliabile convalidare l'impronta digitale degli host. È sufficiente eseguire questa operazione 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}'
.
Per eseguire il comando usando l'interfaccia della riga di comando, usare il az vm run-command invoke
comando .
Se è stata configurata una passphrase quando è stata creata la 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
Per informazioni sulle chiavi SSH nel portale di Azure da usare durante la creazione di macchine virtuali, vedere Generare e archiviare chiavi SSH nel portale di Azure.
Per informazioni sulle chiavi SSH nell'interfaccia della riga di comando di Azure da usare durante la creazione di macchine virtuali, vedere Generare e archiviare chiavi SSH con l'interfaccia della riga di comando di Azure.
Per istruzioni dettagliate, opzioni ed esempi avanzati di utilizzo delle chiavi SSH, vedere Procedura dettagliata per creare coppie di chiavi SSH.
Se si verificano problemi nell'uso di SSH per connettersi alle macchine virtuali Linux, vedere Risoluzione dei problemi di connessione SSH a una macchina virtuale Linux di Azure.