Come usare le chiavi SSH con Windows in AzureHow to Use SSH keys with Windows on Azure

Quando ci si connette a macchine virtuali (VM) Linux in Azure, è necessario usare la crittografia a chiave pubblica per fornire un modo più sicuro per accedere alla VM Linux.When you connect to Linux virtual machines (VMs) in Azure, you should use public-key cryptography to provide a more secure way to log in to your Linux VM. Questo processo comporta uno scambio di chiavi pubbliche e private mediante il comando Sicure Shell (SSH) per l'autenticazione, anziché nome utente e password.This process involves a public and private key exchange using the secure shell (SSH) command to authenticate yourself rather than a username and password. Le password sono vulnerabili agli attacchi di forza bruta, soprattutto nelle VM con connessione Internet, ad esempio i server Web.Passwords are vulnerable to brute-force attacks, especially on Internet-facing VMs such as web servers. Questo articolo fornisce una panoramica delle chiavi SSH e di come generare le chiavi appropriate in un computer Windows.This article provides an overview of SSH keys and how to generate the appropriate keys on a Windows computer.

Panoramica di SSH e delle chiaviOverview of SSH and keys

È possibile accedere in modo sicuro alla VM Linux mediante una chiave pubblica e una chiave privata:You can securely log in to your Linux VM by using public and private keys:

  • La chiave pubblica si trova nella VM Linux o in qualsiasi altro servizio che si desidera usare con la crittografia a chiave pubblica.The public key is placed on your Linux VM, or any other service that you wish to use with public-key cryptography.
  • La chiave privata è quella che si presenta alla VM Linux quando si effettua l'accesso, per verificare la propria identità.The private key is what you present to your Linux VM when you log in, to verify your identity. Sulla chiave privata è necessario mantenere la massima riservatezza,Protect this private key. evitando di condividerla.Do not share it.

La chiave pubblica e la chiave privata sono utilizzabili in più VM e servizi.These public and private keys can be used on multiple VMs and services. Non è necessaria una coppia di chiavi per ogni VM o servizio a cui si desidera accedere.You do not need a pair of keys for each VM or service you wish to access. Per una panoramica più dettagliata, vedere crittografia a chiave pubblica.For a more detailed overview, see public-key cryptography.

SSH è un protocollo per connessioni crittografate che consente accessi protetti su connessioni non sicure.SSH is an encrypted connection protocol that allows secure logins over unsecured connections. È il protocollo di connessione predefinito per le VM Linux ospitate in Azure.It is the default connection protocol for Linux VMs hosted in Azure. Sebbene SSH stessa fornisca una connessione crittografata, se si usano password con le connessioni SSH la VM rimane vulnerabile agli attacchi di forza bruta o di individuazione password.Although SSH itself provides an encrypted connection, using passwords with SSH connections still leaves the VM vulnerable to brute-force attacks or guessing of passwords. Un metodo più sicuro e preferito per la connessione a una VM mediante SSH è tramite chiave pubblica e privata, anche dette chiavi SSH.A more secure and preferred method of connecting to a VM using SSH is by using these public and private keys, also known as SSH keys.

Se non si desidera usare chiavi SSH, è possibile comunque accedere alle VM Linux mediante una password.If you do not wish to use SSH keys, you can still log in to your Linux VMs using a password. Se la VM non è connessa a Internet, l'utilizzo di password può essere sufficiente.If your VM is not exposed to the Internet, using passwords may be sufficient. Tuttavia è comunque necessario gestire le password per ogni VM Linux e mantenere criteri e procedure relative alle password integre, quali una lunghezza minima delle password e aggiornamenti regolari.However, you still need to manage your passwords for each Linux VM and maintain healthy password policies and practices, such as minimum password length and regularly updating them. L'utilizzo delle chiavi SSH riduce la complessità di gestione delle credenziali individuali tra più VM.The use of SSH keys reduces the complexity of managing individual credentials across multiple VMs.

Pacchetti Windows e client SSHWindows packages and SSH clients

Per la connessione a VM Linux e la loro gestione in Azure si usa un client SSH.You connect to and manage Linux VMs in Azure using an SSH client. I computer Windows tipicamente non hanno un client SSH installato.Windows computers do not typically have an SSH client installed. Nell'Aggiornamento dell'anniversario di Windows 10 è stato aggiunto Bash per Windows e l'aggiornamento Windows 10 Creators Update più recente offre aggiornamenti aggiuntivi.The Windows 10 Anniversary Update added Bash for Windows, and the latest Windows 10 Creators Update provides additional updates. Questo sottosistema di Windows per Linux consente di eseguire e di accedere a utilità come un client SSH in modo nativo dall'interno della shell di Bash.This Windows Subsystem for Linux allows you to run and access utilities such as an SSH client natively within a Bash shell. È quindi possibile seguire uno dei documenti Linux, ad esempio How to generate SSH key pairs for Linux (Come generare coppie di chiavi SSH per Linux).You can then follow any of the Linux docs, such as How to generate SSH key pairs for Linux. Bash per Windows è ancora in fase di sviluppo e viene considerato una versione beta.Bash for Windows is still under development, and is considered a beta release. Per altre informazioni su Bash per Windows, vedere Bash in Ubuntu in Windows.For more information about Bash for Windows, see Bash on Ubuntu on Windows.

Se si intende usare una soluzione diversa da Bash per Windows, sono disponibili client SSH Windows comuni nei pacchetti seguenti:If you wish to use something other than Bash for Windows, common Windows SSH clients you can install are included in the following packages:

Quali file di chiavi è necessario creare?Which key files do you need to create?

Azure richiede chiavi pubbliche e private nel formato ssh-rsa almeno a 2048 bit.Azure requires at least 2048-bit, ssh-rsa formatted public and private keys. Se si gestiscono risorse di Azure usando il modello di distribuzione classico, è necessario anche generare un PEM (file .pem).If you are managing Azure resources using the Classic deployment model, you also need to generate a PEM (.pem file).

Di seguito sono descritti gli scenari di distribuzione e i tipi di file da usare per ognuno:Here are the deployment scenarios, and the types of files you use in each:

  1. Le chiavi ssh-rsa sono necessarie per qualsiasi distribuzione che usa il portale di Azure e le distribuzioni di Resource Manager che usano l'interfaccia della riga di comando di Azure.ssh-rsa keys are required for any deployment using the Azure portal, and Resource Manager deployments using the Azure CLI.
    • Queste chiavi sono in genere tutto ciò che serve alla maggior parte degli utenti.These keys are usually all most people need.
  2. Il file .pem è necessario per creare VM mediante la distribuzione classica.A .pem file is required to create VMs using the Classic deployment. Queste chiavi sono supportate nelle distribuzioni classiche quando si usa il portale di Azure o l'interfaccia della riga di comando di Azure.These keys are supported in Classic deployments when using the Azure portal or Azure CLI.
    • È necessario creare questi certificati e chiavi aggiuntive solo se si gestiscono risorse create usando il modello di distribuzione classica.You only need to create these additional keys and certificates if you are managing resources created using the Classic deployment model.

Installare Git per WindowsInstall Git for Windows

Nella sezione precedente sono elencati diversi pacchetti che includono lo strumento openssl per Windows.The preceding section listed several packages that include the openssl tool for Windows. Questo strumento è necessario per creare chiavi pubbliche e private.This tool is needed to create public and private keys. L'esempio seguente illustra come installare e usare Git per Windows, ma è possibile scegliere qualsiasi pacchetto desiderato.The following examples detail how to install and use Git for Windows, though you can choose whichever package you prefer. GIT per Windows consente di accedere ad alcuni strumenti software open-source (OSS) e utilità aggiuntive che possono essere utili quando si lavora con le VM Linux.Git for Windows gives you access to some additional open-source software (OSS) tools and utilities that may be useful as you work with Linux VMs.

  1. Scaricare e installare Git per Windows dal percorso seguente: https://git-for-windows.github.io/.Download and install Git for Windows from the following location: https://git-for-windows.github.io/.
  2. Accettare le opzioni predefinite durante il processo di installazione, a meno che sia necessario modificarle.Accept the default options during the install process unless you specifically need to change them.
  3. Eseguire Git Bash dal Menu Start > Git > Git Bash.Run Git Bash from the Start Menu > Git > Git Bash. La console è simile all'esempio seguente:The console looks similar to the following example:

    Shell Bash di GIT per Windows

Creare una chiave privataCreate a private key

  1. Nella finestra Git Bash usare openssl.exe per creare una chiave privata.In your Git Bash window, use openssl.exe to create a private key. Nell'esempio seguente vengono creati una chiave denominata myPrivateKey e un certificato denominato myCert.pem:The following example creates a key named myPrivateKey and certificate named myCert.pem:

    openssl.exe req -x509 -nodes -days 365 -newkey rsa:2048 \
        -keyout myPrivateKey.key -out myCert.pem
    

    L'output è simile al seguente esempio:The output looks similar to the following example:

    Generating a 2048 bit RSA private key
    .......................................+++
    .......................+++
    writing new private key to 'myPrivateKey.key'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [AU]:
    

    Se bash segnala un errore, provare ad aprire una nuova finestra Git Bash con privilegi elevati.If bash reports an error, try opening a new Git Bash window with elevated privileges. Quindi eseguire di nuovo il comando openssl.Then, rerun the openssl command.

  2. Rispondere ai prompt per il nome del paese, la località, il nome dell'organizzazione e così via.Answer the prompts for country name, location, organization name, etc.

  3. La nuova chiave privata e certificato vengono creati nella directory di lavoro corrente.Your new private key and certificate are created in your current working directory. Come misura di sicurezza, è necessario impostare le autorizzazioni per la chiave privata in modo da essere l'unica persona a potervi accedere:As a security measure, you should set the permissions on your private key so that only you can access it:

    chmod 0600 myPrivateKey.key
    
  4. La sezione successiva descrive nei dettagli l'uso di PuTTYgen sia per visualizzare che per utilizzare la chiave pubblica nonché per creare una chiave privata specifica per l'impiego di PuTTY con SSH in VM Linux.The next section details using PuTTYgen to both view and use the public key, and create a private key specific for using PuTTY to SSH to Linux VMs. Il comando seguente genera un file di chiave pubblica denominato myPublicKey.key che è possibile usare subito:The following command generates a public key file named myPublicKey.key that you can use right away:

    openssl.exe rsa -pubout -in myPrivateKey.key -out myPublicKey.key
    
  5. Se è necessario anche gestire le risorse classiche, convertire myCert.pem in myCert.cer (certificato X509 con codifica DER).If you also need to manage Classic resources, convert the myCert.pem to myCert.cer (DER encoded X509 certificate). Eseguire questo passaggio facoltativo solo se è necessario gestire in modo specifico risorse classiche precedenti.Perform this optional step only if you need to specifically manage older Classic resources.

    Convertire il certificato mediante il comando seguente:Convert the certificate using the following command:

    openssl.exe  x509 -outform der -in myCert.pem -out myCert.cer
    

Creare una chiave privata per PuTTYCreate a private key for PuTTY

PuTTY è un comune client SSH per Windows.PuTTY is a common SSH client for Windows. È possibile usare qualsiasi client SSH desiderato.You are free to use any SSH client that you wish. Per usare PuTTY è necessario creare un tipo di chiave aggiuntivo, una chiave privata PuTTY (PPK).To use PuTTY, you need to create an additional type of key - a PuTTY Private Key (PPK). Se non si desidera usare PuTTY, ignorare questa sezione.If you do not wish to use PuTTY, skip this section.

L'esempio seguente crea questa chiave privata aggiuntiva appositamente per l'uso da parte di PuTTY:The following example creates this additional private key specifically for PuTTY to use:

  1. Usare Git Bash per convertire la propria chiave privata in una chiave privata RSA che PuTTYgen possa comprendere.Use Git Bash to convert your private key into an RSA private key that PuTTYgen can understand. Nell'esempio seguente viene creata una chiave denominata myPrivateKey_rsa dalla chiave esistente denominata myPrivateKey:The following example creates a key named myPrivateKey_rsa from the existing key named myPrivateKey:

    openssl rsa -in ./myPrivateKey.key -out myPrivateKey_rsa
    

    Come misura di sicurezza, è necessario impostare le autorizzazioni per la chiave privata in modo da essere l'unica persona a potervi accedere:As a security measure, you should set the permissions on your private key so that only you can access it:

    chmod 0600 myPrivateKey_rsa
    
  2. Scaricare ed eseguire PuTTYgen dal percorso seguente: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.htmlDownload and run PuTTYgen from the following location: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
  3. Fare clic sul menu: File > Load Private KeyClick the menu: File > Load Private Key
  4. Individuare la chiave privata (myPrivateKey_rsa nell'esempio precedente).Locate your private key (myPrivateKey_rsa in the previous example). La directory predefinita quando si avvia Git Bash è C:\Users\%username%.The default directory when you start Git Bash is C:\Users\%username%. Modificare il filtro dei file in modo da visualizzare Tutti i file (*.*):Change the file filter to show All Files (*.*):

    Caricare la chiave privata esistente in PuTTYgen

  5. Fare clic su Apri.Click Open. Un messaggio indica che la chiave è stata importata correttamente:A prompt indicates that the key has been successfully imported:

    Chiave importata correttamente in PuTTYgen

  6. Fare clic su OK per chiudere la finestra del messaggio.Click OK to close the prompt.
  7. La chiave pubblica viene visualizzata nella parte superiore della finestra di PuTTYgen.The public key is displayed at the top of the PuTTYgen window. Questa chiave pubblica potrà essere copiata e incollata nel portale di Azure o in un modello di Azure Resource Manager quando si crea una VM Linux.You copy and paste this public key into the Azure portal or Azure Resource Manager template when you create a Linux VM. È inoltre possibile fare clic su Salva chiave pubblica per salvare una copia nel computer:You can also click Save public key to save a copy to your computer:

    Salvare un file di chiave pubblica PuTTY

    L'esempio seguente illustra come copiare e incollare questa chiave pubblica nel portale di Azure quando si crea una VM Linux.The following example shows how you would copy and paste this public key into the Azure portal when you create a Linux VM. Quindi la chiave pubblica viene generalmente archiviata in ~/.ssh/authorized_keys nella nuova VM.The public key is typically then stored in ~/.ssh/authorized_keys on your new VM.

    Usare la chiave pubblica quando si crea una VM nel portale di Azure

  8. Quando si torna in PuTTYgen, fare clic su Save private Key:Back in PuTTYgen, Click Save private Key:

    Salvare il file di chiave privata PuTTY

    Avviso

    Un messaggio chiede se si desidera continuare senza immettere una passphrase per la chiave.A prompt asks if you wish to continue without entering a passphrase for your key. Una passphrase è come una password associata alla chiave privata.A passphrase is like a password attached to your private key. Anche se qualcuno riuscisse a ottenere la chiave privata, la sola chiave non gli consentirebbe comunque di autenticarsi.Even if someone were to obtain your private key, they still would not be able to authenticate using just the key. Per farlo avrebbe bisogno anche della passphrase.They would also need the passphrase. Quando non si imposta una passphrase, se un utente ottiene la chiave privata potrà accedere a qualsiasi VM o servizio che usa tale chiave.Without a passphrase, if someone obtains your private key, they can log in to any VM or service that uses that key. Creare una passphrase è altamente consigliato.We recommend you create a passphrase. Tuttavia, se si dimentica la passphrase, non è possibile recuperarla.However, if you forget the passphrase, there is no way to recover it.

    Se si desidera immettere una passphrase, fare clic su No, immettere una passphrase nella finestra principale di PuTTYgen e quindi fare clic di nuovo su Save private key.If you wish to enter a passphrase, click No, enter a passphrase in the main PuTTYgen window, and then click Save private key again. In caso contrario, fare clic su per continuare senza fornire la passphrase facoltativa.Otherwise, click Yes to continue without providing the optional passphrase.

  9. Immettere un nome e un percorso in cui salvare il file PPK.Enter a name and location to save your PPK file.

Usare Putty per connettere SSH a un computer LinuxUse Putty to SSH to a Linux Machine

PuTTY, come indicato in precedenza, è un comune client SSH per Windows.Again, PuTTY is a common SSH client for Windows. È possibile usare qualsiasi client SSH desiderato.You are free to use any SSH client that you wish. La procedura seguente illustra come usare la chiave privata per autenticarsi con la VM Azure tramite SSH.The following steps detail how to use your private key to authenticate with your Azure VM using SSH. I passaggi sono simili in altri client con chiave SSH per quanto riguarda la necessità di caricare la chiave privata per autenticare la connessione SSH.The steps are similar in other SSH key clients in terms of needing to load your private key to authenticate the SSH connection.

  1. Scaricare ed eseguire putty dal percorso seguente: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.htmlDownload and run putty from the following location: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
  2. Specificare il nome host o l'indirizzo IP della VM dal portale di Azure:Fill in the host name or IP address of your VM from the Azure portal:

    Aprire una nuova connessione PuTTY

  3. Prima di selezionare Apri, fare clic sulla scheda Connessione > SSH > Aut. Individuare e selezionare la chiave privata:Before selecting Open, click Connection > SSH > Auth tab. Browse to and select your private key:

    Selezionare la chiave privata PuTTY per l'autenticazione

  4. Fare clic su Open per connettersi alla macchina virtuale.Click Open to connect to your virtual machine

Passaggi successiviNext steps

È possibile generare chiavi pubbliche e private anche con OS X e Linux.You can also generate the public and private keys using OS X and Linux.

Per altre informazioni su Bash per Windows e sui vantaggi di avere strumenti OSS disponibili nel computer Windows, vedere Bash in Ubuntu in Windows.For more information about Bash for Windows and the benefits of having OSS tools readily available on your Windows computer, see Bash on Ubuntu on Windows.

Se si verificano problemi nell'uso di SSH per connettersi alle VM Linux, vedere Risoluzione dei problemi di connessione SSH a una VM Linux di Azure.If you have trouble using SSH to connect to your Linux VMs, see Troubleshoot SSH connections to an Azure Linux VM.