Azioni rapide: Creare e usare una coppia di chiavi SSH pubblica e privata per le macchine virtuali Linux in AzureQuick steps: Create and use an SSH public-private key pair for Linux VMs in Azure

Con una coppia di chiavi SSH (Secure Shell) è possibile creare macchine virtuali in Azure che per impostazione predefinita usano le chiavi SSH per l'autenticazione, eliminando la necessità di password per l'accesso.With a secure shell (SSH) key pair, you can create virtual machines (VMs) in Azure that use SSH keys for authentication, eliminating the need for passwords to sign in. Questo articolo illustra come generare rapidamente e usare una coppia di file di chiavi pubblica e privata per le macchine virtuali Linux.This article shows you how to quickly generate and use an SSH public-private key file pair for Linux VMs. È possibile completare questa procedura con Azure Cloud Shell, un host Linux o macOS, il sottosistema Windows per Linux, e altri strumenti che supportano OpenSSH.You can complete these steps with the Azure Cloud Shell, a macOS or Linux host, the Windows Subsystem for Linux, and other tools that support OpenSSH.

Nota

Per impostazione predefinita, le macchine virtuali create con le chiavi SSH vengono configurate con le password disabilitate, aumentando considerevolmente la difficoltà degli attacchi basati su forza bruta per scoprire le password.VMs created using SSH keys are by default configured with passwords disabled, which greatly increases the difficulty of brute-force guessing attacks.

Per altri scenari ed esempi, vedere Procedura dettagliata per creare coppie di chiavi SSH.For more background and examples, see Detailed steps to create SSH key pairs.

Per altri modi in cui generare e usare le chiavi SSH in un computer Windows, vedere Come usare le chiavi SSH con Windows in Azure.For additional ways to generate and use SSH keys on a Windows computer, see How to use SSH keys with Windows on Azure.

Formati di chiave SSH supportatiSupported SSH key formats

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.Azure currently supports SSH protocol 2 (SSH-2) RSA public-private key pairs with a minimum length of 2048 bits. Altri formati di chiave, ad esempio ED25519 ed ECDSA, non sono supportati.Other key formats such as ED25519 and ECDSA are not supported.

Creare una coppia di chiavi SSHCreate an SSH key pair

Usare il comando ssh-keygen per generare i file di chiave pubblica e privata SSH.Use the ssh-keygen command to generate SSH public and private key files. Per impostazione predefinita, questi file vengono creati nella directory ~/.ssh.By default, these files are created in the ~/.ssh directory. È possibile specificare un percorso diverso e una password facoltativa (passphrase) per accedere al file di chiave privata.You can specify a different location, and an optional password (passphrase) to access the private key file. Se nel percorso specificato è presente una coppia di chiavi SSH con lo stesso nome, questi file vengono sovrascritti.If an SSH key pair with the same name exists in the given location, those files are overwritten.

Il comando seguente crea una coppia di chiavi SSH usando la crittografia RSA e una lunghezza di bit di 4096:The following command creates an SSH key pair using RSA encryption and a bit length of 4096:

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

Se si usa l'interfaccia della riga di comando di Azure per creare la macchina virtuale con il comando az vm create, facoltativamente è possibile creare i file della chiave SSH pubblica e privata usando con l'opzione --generate-ssh-keys.If you use the Azure CLI to create your VM with the az vm create command, you can optionally generate SSH public and private key files using the --generate-ssh-keys option. I file delle chiavi vengono archiviati nella directory ~/.ssh se non diversamente specificato con l'opzione --ssh-dest-key-path.The key files are stored in the ~/.ssh directory unless specified otherwise with the --ssh-dest-key-path option. L'opzione --generate-ssh-keys non sovrascriverà i file delle chiavi esistenti, ma restituirà un errore.The --generate-ssh-keys option will not overwrite existing key files, instead returning an error. Nel comando seguente sostituire VMname e RGname con i propri valori:In the following command, replace VMname and RGname with your own values:

az vm create --name VMname --resource-group RGname --generate-ssh-keys 

Fornire una chiave SSH pubblica quando si distribuisce una macchina virtualeProvide an SSH public key when deploying a VM

Per creare una macchina virtuale Linux che usa le chiavi SSH per l'autenticazione, specificare la chiave SSH pubblica quando si crea la macchina virtuale tramite il portale di Azure, l'interfaccia della riga di comando di Azure, i modelli di Azure Resource Manager o altri metodi:To create a Linux VM that uses SSH keys for authentication, specify your SSH public key when creating the VM using the Azure portal, Azure CLI, Azure Resource Manager templates, or other methods:

Se non si ha familiarità con il formato di una chiave pubblica SSH, è possibile visualizzare la chiave pubblica con il comando cat seguente, sostituendo ~/.ssh/id_rsa.pub con il percorso e il nome del proprio file di chiave pubblica, se necessario:If you're not familiar with the format of an SSH public key, you can display your public key with the following cat command, replacing ~/.ssh/id_rsa.pub with the path and filename of your own public key file if needed:

cat ~/.ssh/id_rsa.pub

Un valore di chiave pubblica tipico è simile all'esempio seguente:A typical public key value looks like this example:

ssh-rsa AAAAB3NzaC1yc2EAABADAQABAAACAQC1/KanayNr+Q7ogR5mKnGpKWRBQU7F3Jjhn7utdf7Z2iUFykaYx+MInSnT3XdnBRS8KhC0IP8ptbngIaNOWd6zM8hB6UrcRTlTpwk/SuGMw1Vb40xlEFphBkVEUgBolOoANIEXriAMvlDMZsgvnMFiQ12tD/u14cxy1WNEMAftey/vX3Fgp2vEq4zHXEliY/sFZLJUJzcRUI0MOfHXAuCjg/qyqqbIuTDFyfg8k0JTtyGFEMQhbXKcuP2yGx1uw0ice62LRzr8w0mszftXyMik1PnshRXbmE2xgINYg5xo/ra3mq2imwtOKJpfdtFoMiKhJmSNHBSkK7vFTeYgg0v2cQ2+vL38lcIFX4Oh+QCzvNF/AXoDVlQtVtSqfQxRVG79Zqio5p12gHFktlfV7reCBvVIhyxc2LlYUkrq4DHzkxNY5c9OGSHXSle9YsO3F1J5ip18f6gPq4xFmo6dVoJodZm9N0YMKCkZ4k1qJDESsJBk2ujDPmQQeMjJX3FnDXYYB182ZCGQzXfzlPDC29cWVgDZEXNHuYrOLmJTmYtLZ4WkdUhLLlt5XsdoKWqlWpbegyYtGZgeZNRtOOdN6ybOPJqmYFd2qRtb4sYPniGJDOGhx4VodXAjT09omhQJpE6wlZbRWDvKC55R2d/CSPHJscEiuudb+1SG2uA/oik/WQ== username@domainname

Se si copiano e si incollano i contenuti del file di chiave pubblica da usare nel portale di Azure o in un modello di Resource Manager, verificare di non copiare spazi finali.If you copy and paste the contents of the public key file to use in the Azure portal or a Resource Manager template, make sure you don't copy any trailing whitespace. Per copiare una chiave pubblica in macOS, è possibile inviare tramite pipe il file della chiave pubblica a pbcopy.To copy a public key in macOS, you can pipe the public key file to pbcopy. Analogamente in Linux è possibile inviare tramite pipe il file della chiave pubblica a programmi come xclip.Similarly in Linux, you can pipe the public key file to programs such as xclip.

Per impostazione predefinita, la chiave pubblica che si inserisce nella macchina virtuale Linux in Azure viene archiviata in ~/.ssh/id_rsa.pub, a meno che non sia stato specificato un percorso diverso in fase di creazione della coppia di chiavi.The public key that you place on your Linux VM in Azure is by default stored in ~/.ssh/id_rsa.pub, unless you specified a different location when you created the key pair. Per usare l'interfaccia della riga di comando di Azure 2.0 per creare la macchina virtuale con una chiave pubblica esistente, specificare il valore e, facoltativamente, il percorso della chiave pubblica usando il comando az vm create con l'opzione --ssh-key-value.To use the Azure CLI 2.0 to create your VM with an existing public key, specify the value and optionally the location of this public key using the az vm create command with the --ssh-key-value option. Nel comando seguente sostituire VMname, RGname e keyFile con i propri valori:In the following command, replace VMname, RGname, and keyFile with your own values:

az vm create --name VMname --resource-group RGname --ssh-key-value @keyFile

Usare SSH per connettersi alla macchina virtualeSSH into your VM

Con la chiave pubblica distribuita nella macchina virtuale di Azure e la chiave privata nel sistema locale, stabilire una connessione SSH alla macchina virtuale usando l'indirizzo IP o il nome DNS della macchina virtuale.With the public key deployed on your Azure VM, and the private key on your local system, SSH into your VM using the IP address or DNS name of your VM. Nel comando seguente sostituire azureuser e myvm.westus.cloudapp.azure.com con il nome utente dell'amministratore e il nome di dominio completo (o indirizzo IP):In the following command, replace azureuser and myvm.westus.cloudapp.azure.com with the administrator user name and the fully qualified domain name (or IP address):

ssh azureuser@myvm.westus.cloudapp.azure.com

Se è stata specificata una passphrase durante la creazione della coppia di chiavi, immettere tale passphrase quando viene richiesta durante il processo di accesso.If you specified a passphrase when you created your key pair, enter that passphrase when prompted during the login process. La macchina virtuale viene aggiunta al file ~/.ssh/known_hosts e non verrà chiesto di connettersi di nuovo finché la chiave pubblica nella macchina virtuale di Azure non viene modificata o il nome server viene rimosso da ~/.ssh/known_hosts.The VM is added to your ~/.ssh/known_hosts file, and you won't be asked to connect again until either the public key on your Azure VM changes or the server name is removed from ~/.ssh/known_hosts.

Se la macchina virtuale usa i criteri di accesso JIT, è necessario richiedere l'accesso per connettersi alla macchina virtuale.If the VM is using the just-in-time access policy, you need to request access before you can connect to the VM. Per altre informazioni sui criteri JIT, vedere Gestire l'accesso alle macchine virtuali con la funzionalità JIT (Just-in-Time).For more information about the just-in-time policy, see Manage virtual machine access using the just in time policy.

Passaggi successiviNext steps