Risoluzione dei problemi di connessione SSH a una macchina virtuale Linux di Azure che ha esito negativo, genera errori o è stata rifiutata.Troubleshoot SSH connections to an Azure Linux VM that fails, errors out, or is refused

Sono vari i motivi per cui possono verificarsi errori Secure Shell (SSH), la connessione SSH non riesce o viene rifiutata durante il tentativo di connessione a una macchina virtuale Linux.There are various reasons that you encounter Secure Shell (SSH) errors, SSH connection failures, or SSH is refused when you try to connect to a Linux virtual machine (VM). Questo articolo consente di individuare i problemi e correggerli.This article helps you find and correct the problems. È possibile usare il portale di Azure, l'interfaccia della riga di comando Azure o l'estensione dell'accesso alle VM per Linux per risolvere i problemi di connessione.You can use the Azure portal, Azure CLI, or VM Access Extension for Linux to troubleshoot and resolve connection problems.

Nota

Azure offre due modelli di distribuzione per creare e usare le risorse: Gestione risorse e la distribuzione classica.Azure has two different deployment models for creating and working with resources: Resource Manager and classic. In questo articolo viene illustrato l'utilizzo di entrambi i modelli, ma Microsoft indica che le distribuzioni più nuove utilizzano il modello di gestione delle risorse.This article covers using both models, but Microsoft recommends that most new deployments use the Resource Manager model.

Per ricevere assistenza in qualsiasi punto di questo articolo, contattare gli esperti di Azure nei forum MSDN e Stack Overflow relativi ad Azure.If you need more help at any point in this article, you can contact the Azure experts on the MSDN Azure and Stack Overflow forums. In alternativa, è possibile archiviare un evento imprevisto di supporto tecnico di Azure.Alternatively, you can file an Azure support incident. Accedere al sito del supporto di Azure e selezionare Ottenere supporto.Go to the Azure support site and select Get support. Per informazioni sull'uso del supporto di Azure, leggere le Domande frequenti sul supporto di Azure.For information about using Azure Support, read the Microsoft Azure support FAQ.

Passaggi rapidi per la risoluzione dei problemiQuick troubleshooting steps

Dopo ogni passaggio della procedura di risoluzione dei problemi, tentare la riconnessione alla VM.After each troubleshooting step, try reconnecting to the VM.

  1. Reimpostare la configurazione SSH.Reset the SSH configuration.
  2. Reimpostare le credenziali per l'utente.Reset the credentials for the user.
  3. Verificare che le regole del gruppo di sicurezza di rete consentano il traffico SSH.Verify the Network Security Group rules permit SSH traffic.
    • Verificare l'esistenza di una regola del gruppo di sicurezza di rete che consente il traffico SSH (per impostazione predefinita, la porta TCP 22).Ensure that a Network Security Group rule exists to permit SSH traffic (by default, TCP port 22).
    • Non è possibile usare il reindirizzamento o mapping delle porte senza usare Azure Load Balancer.You cannot use port redirection / mapping without using an Azure load balancer.
  4. Controllare l'integrità delle risorse della VM.Check the VM resource health.
    • Assicurarsi che la macchina virtuale venga segnalata come integra.Ensure that the VM reports as being healthy.
    • Se si dispone della diagnostica di avvio abilitata, verificare che la macchina virtuale non segnali errori di avvio nei log.If you have boot diagnostics enabled, verify the VM is not reporting boot errors in the logs.
  5. Riavviare la VM.Restart the VM.
  6. Distribuire di nuovo la VM.Redeploy the VM.

Continuare la lettura per la procedura di risoluzione dei problemi e spiegazioni più dettagliate.Continue reading for more detailed troubleshooting steps and explanations.

Metodi disponibili per risolvere i problemi di connessione SSHAvailable methods to troubleshoot SSH connection issues

È possibile reimpostare le credenziali o la configurazione SSH usando uno dei metodi seguenti:You can reset credentials or SSH configuration using one of the following methods:

Dopo ogni passaggio della procedura di risoluzione dei problemi, ritentare di connettersi alla VM.After each troubleshooting step, try connecting to your VM again. Se ancora non è possibile connettersi, procedere al passaggio successivo.If you still cannot connect, try the next step.

Usare il portale di AzureUse the Azure portal

Il portale di Azure offre un modo rapido per reimpostare le credenziali utente o la configurazione SSH senza installare nessuno degli strumenti presenti nel computer locale.The Azure portal provides a quick way to reset the SSH configuration or user credentials without installing any tools on your local computer.

Selezionare la macchina virtuale nel portale di Azure.Select your VM in the Azure portal. Scorrere verso il basso la sezione Supporto e risoluzione dei problemi e selezionare Reimposta password come nell'esempio seguente:Scroll down to the Support + Troubleshooting section and select Reset password as in the following example:

Reimpostare le credenziali o la configurazione SSH nel portale di Azure

Reimpostare la configurazione SSHReset the SSH configuration

Come primo passaggio, selezionare Reset configuration only dal menu a discesa Modalità come nella schermata precedente, quindi fare clic sul pulsante Reimposta.As a first step, select Reset configuration only from the Mode drop-down menu as in the preceding screenshot, then click the Reset button. Dopo aver completato questa operazione, provare ad accedere nuovamente alla macchina virtuale.Once this action has completed, try to access your VM again.

Reimpostare le credenziali SSH di un utenteReset SSH credentials for a user

Per reimpostare le credenziali di un utente esistente, selezionare Reset SSH public key o Reset password dal menu a discesa Modalità come nella schermata precedente.To reset the credentials of an existing user, select either Reset SSH public key or Reset password from the Mode drop-down menu as in the preceding screenshot. Specificare il nome utente e la chiave SSH o la nuova password, quindi fare clic sul pulsante Reimposta.Specify the username and an SSH key or new password, then click the Reset button.

Da questo menu è possibile anche creare un utente con privilegi sudo nella macchina virtuale.You can also create a user with sudo privileges on the VM from this menu. Inserire il nuovo nome utente e la password o la chiave SSH associata, quindi fare clic sul pulsante Reimposta.Enter a new username and associated password or SSH key, and then click the Reset button.

Usare l'interfaccia della riga di comando di Azure 2.0Use the Azure CLI 2.0

Se non è già stato fatto, installare la versione più recente dell'interfaccia della riga di comando di Azure 2.0 e accedere a un account di Azure tramite il comando az login.If you haven't already, install the latest Azure CLI 2.0 and log in to an Azure account using az login.

Se è stata creata e caricata un'immagine del disco Linux personalizzata, verificare che sia installato l'agente Linux di Microsoft Azure in versione 2.0.5 o successiva.If you created and uploaded a custom Linux disk image, make sure the Microsoft Azure Linux Agent version 2.0.5 or later is installed. Per le macchine virtuali create tramite le immagini della raccolta, questa estensione dell'accesso è già installata e configurata automaticamente.For VMs created using Gallery images, this access extension is already installed and configured for you.

Reimpostare la configurazione SSHReset SSH configuration

È possibile provare inizialmente a reimpostare la configurazione SSH ai valori predefiniti e riavviare quindi il server SSH nella macchina virtuale.You can initially try resetting the SSH configuration to default values and rebooting the SSH server on the VM. Il nome dell'account utente e la password o le chiavi SSH non verranno modificati.Note that this does not change the user account name, password, or SSH keys. L'esempio seguente usa az vm user reset-ssh per reimpostare la configurazione SSH nella macchina virtuale denominata myVM in myResourceGroup.The following example uses az vm user reset-ssh to reset the SSH configuration on the VM named myVM in myResourceGroup. Usare i valori personalizzati come di seguito:Use your own values as follows:

az vm user reset-ssh --resource-group myResourceGroup --name myVM

Reimpostare le credenziali SSH di un utenteReset SSH credentials for a user

L'esempio seguente usa il comando az vm user update per reimpostare le credenziali per myUsername sul valore specificato in myPassword, nella macchina virtuale denominata myVM in myResourceGroup.The following example uses az vm user update to reset the credentials for myUsername to the value specified in myPassword, on the VM named myVM in myResourceGroup. Usare i valori personalizzati come di seguito:Use your own values as follows:

az vm user update --resource-group myResourceGroup --name myVM \
     --username myUsername --password myPassword

Se si usa l'autenticazione con chiave SSH, è possibile reimpostare la chiave SSH per un determinato utente.If using SSH key authentication, you can reset the SSH key for a given user. L'esempio seguente usa il comando az vm access set-linux-user per aggiornare la chiave SSH memorizzata in ~/.ssh/id_rsa.pub per l'utente denominato myUsername, nella VM denominata myVM in myResourceGroup.The following example uses az vm access set-linux-user to update the SSH key stored in ~/.ssh/id_rsa.pub for the user named myUsername, on the VM named myVM in myResourceGroup. Usare i valori personalizzati come di seguito:Use your own values as follows:

az vm user update --resource-group myResourceGroup --name myVM \
    --username myUsername --ssh-key-value ~/.ssh/id_rsa.pub

Usare l'estensione VMAccessUse the VMAccess extension

L'estensione di accesso alla macchina virtuale per Linux legge un file json che definisce le azioni da eseguire. Queste azioni includono la reimpostazione SSHD, la reimpostazione di una chiave SSH o l'aggiunta di un utente.The VM Access Extension for Linux reads in a json file that defines actions to carry out. These actions include resetting SSHD, resetting an SSH key, or adding a user. È comunque possibile usare l'interfaccia della riga di comando di Azure per chiamare l'estensione VMAccess, ma è possibile anche usare di nuovo i file json tra più macchine virtuali, se desiderato.You still use the Azure CLI to call the VMAccess extension, but you can reuse the json files across multiple VMs if desired. Questo approccio consente di creare un archivio di file json da chiamare per determinati scenari.This approach allows you to create a repository of json files that can then be called for given scenarios.

Reimpostare un disco SSHDReset SSHD

Creare un file denominato settings.json con il contenuto seguente:Create a file named settings.json with the following content:

{  
    "reset_ssh":"True"
}

Tramite l'interfaccia della riga di comando di Azure chiamare l'estensione VMAccessForLinux per reimpostare la connessione SSHD specificando il file json.Using the Azure CLI, you then call the VMAccessForLinux extension to reset your SSHD connection by specifying your json file. L'esempio seguente usa az vm extension set per reimpostare SSHD nella macchina virtuale denominata myVM in myResourceGroup.The following example uses az vm extension set to reset SSHD on the VM named myVM in myResourceGroup. Usare i valori personalizzati come di seguito:Use your own values as follows:

az vm extension set --resource-group philmea --vm-name Ubuntu \
    --name VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.2 --settings settings.json

Reimpostare le credenziali SSH di un utenteReset SSH credentials for a user

Se il disco SSHD funziona correttamente, è possibile reimpostare le credenziali di un determinato utente.If SSHD appears to function correctly, you can reset the credentials for a giver user. Per reimpostare la password per un utente, creare un file denominato settings.json.To reset the password for a user, create a file named settings.json. L'esempio seguente reimposta le credenziali per myUsername sul valore specificato in myPassword.The following example resets the credentials for myUsername to the value specified in myPassword. Immettere le seguenti righe nel file settings.json con valori personalizzati:Enter the following lines into your settings.json file, using your own values:

{
    "username":"myUsername", "password":"myPassword"
}

In alternativa, per reimpostare la chiave SSH per un utente, creare innanzitutto un file denominato settings.json.Or to reset the SSH key for a user, first create a file named settings.json. L'esempio seguente reimposta le credenziali per myUsername sul valore specificato in myPassword nella macchina virtuale denominata myVM in myResourceGroup.The following example resets the credentials for myUsername to the value specified in myPassword, on the VM named myVM in myResourceGroup. Immettere le seguenti righe nel file settings.json con valori personalizzati:Enter the following lines into your settings.json file, using your own values:

{
    "username":"myUsername", "ssh_key":"mySSHKey"
}

Dopo aver creato il file json, usare l'interfaccia della riga di comando di Azure per chiamare l'estensione VMAccessForLinux per reimpostare le credenziali dell'utente SSH specificando il file json.After creating your json file, use the Azure CLI to call the VMAccessForLinux extension to reset your SSH user credentials by specifying your json file. L'esempio seguente reimposta le credenziali sulla macchina virtuale denominata myVM in myResourceGroup.The following example resets credentials on the VM named myVM in myResourceGroup. Usare i valori personalizzati come di seguito:Use your own values as follows:

az vm extension set --resource-group philmea --vm-name Ubuntu \
    --name VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.2 --settings settings.json

Usare l'interfaccia della riga di comando di Azure 1.0Use the Azure CLI 1.0

Se necessario, installare l'interfaccia della riga di comando di Azure 1.0 e connettersi alla sottoscrizione di Azure.If you haven't already, install the Azure CLI 1.0 and connect to your Azure subscription. Verificare di usare la modalità di Resource Manager come indicato di seguito:Make sure that you are using Resource Manager mode as follows:

azure config mode arm

Se è stata creata e caricata un'immagine del disco Linux personalizzata, verificare che sia installato l'agente Linux di Microsoft Azure in versione 2.0.5 o successiva.If you created and uploaded a custom Linux disk image, make sure the Microsoft Azure Linux Agent version 2.0.5 or later is installed. Per le macchine virtuali create tramite le immagini della raccolta, questa estensione dell'accesso è già installata e configurata automaticamente.For VMs created using Gallery images, this access extension is already installed and configured for you.

Reimpostare la configurazione SSHReset SSH configuration

La configurazione del disco SSHD in sé può essere errata oppure il servizio ha rilevato un errore.The SSHD configuration itself may be misconfigured or the service encountered an error. È possibile reimpostare il disco SSHD per controllare la validità della configurazione SSH.You can reset SSHD to make sure the SSH configuration itself is valid. La reimpostazione SSHD deve essere il primo passaggio da eseguire per la risoluzione dei problemi.Resetting SSHD should be the first troubleshooting step you take.

L'esempio seguente reimposta SSHD su una macchina virtuale denominata myVM nel gruppo di risorse myResourceGroup.The following example resets SSHD on a VM named myVM in the resource group named myResourceGroup. Usare i nomi della macchina virtuale e del gruppo di risorse personalizzati come segue:Use your own VM and resource group names as follows:

azure vm reset-access --resource-group myResourceGroup --name myVM \
    --reset-ssh

Reimpostare le credenziali SSH di un utenteReset SSH credentials for a user

Se il disco SSHD funziona correttamente, è possibile reimpostare la password di un determinato utente.If SSHD appears to function correctly, you can reset the password for a giver user. L'esempio seguente reimposta le credenziali per myUsername sul valore specificato in myPassword nella macchina virtuale denominata myVM in myResourceGroup.The following example resets the credentials for myUsername to the value specified in myPassword, on the VM named myVM in myResourceGroup. Usare i valori personalizzati come di seguito:Use your own values as follows:

azure vm reset-access --resource-group myResourceGroup --name myVM \
     --user-name myUsername --password myPassword

Se si usa l'autenticazione con chiave SSH, è possibile reimpostare la chiave SSH per un determinato utente.If using SSH key authentication, you can reset the SSH key for a given user. L'esempio seguente aggiorna la chiave SSH archiviata in ~/.ssh/id_rsa.pub per l'utente denominato myUsername nella macchina virtuale denominata myVM in myResourceGroup.The following example updates the SSH key stored in ~/.ssh/id_rsa.pub for the user named myUsername, on the VM named myVM in myResourceGroup. Usare i valori personalizzati come di seguito:Use your own values as follows:

azure vm reset-access --resource-group myResourceGroup --name myVM \
    --user-name myUsername --ssh-key-file ~/.ssh/id_rsa.pub

Riavviare una macchina virtualeRestart a VM

Se sono state reimpostate la configurazione SSH e le credenziali utente o si è verificato un errore durante queste operazioni, è possibile provare a riavviare la macchina virtuale per risolvere i problemi di calcolo alla base.If you have reset the SSH configuration and user credentials, or encountered an error in doing so, you can try restarting the VM to address underlying compute issues.

Portale di AzureAzure portal

Per riavviare una macchina virtuale dal portale di Azure, selezionare la macchina virtuale e scegliere il pulsante Riavvia come nell'esempio seguente:To restart a VM using the Azure portal, select your VM and click the Restart button as in the following example:

Riavviare una macchina virtuale nel portale di Azure

Interfaccia della riga di comando di Azure 1.0Azure CLI 1.0

L'esempio seguente riavvia la macchina virtuale denominata myVM nel gruppo di risorse myResourceGroup.The following example restarts the VM named myVM in the resource group named myResourceGroup. Usare i valori personalizzati come di seguito:Use your own values as follows:

azure vm restart --resource-group myResourceGroup --name myVM

Interfaccia della riga di comando di Azure 2.0Azure CLI 2.0

L'esempio seguente usa il comando az vm restart per riavviare la macchina virtuale denominata myVM nel gruppo di risorse denominato myResourceGroup.The following example uses az vm restart to restart the VM named myVM in the resource group named myResourceGroup. Usare i valori personalizzati come di seguito:Use your own values as follows:

az vm restart --resource-group myResourceGroup --name myVM

Ridistribuire una VMRedeploy a VM

È possibile ridistribuire una VM in un altro nodo all'interno di Azure, correggendo eventuali problemi di rete sottostanti.You can redeploy a VM to another node within Azure, which may correct any underlying networking issues. Per informazioni su come eseguire questa operazione, vedere Ridistribuzione della macchina virtuale su un nuovo nodo di Azure.For information about redeploying a VM, see Redeploy virtual machine to new Azure node.

Nota

Al termine di questa operazione i dati temporanei del disco andranno persi e gli indirizzi IP dinamici associati alla macchina virtuale saranno aggiornati.After this operation finishes, ephemeral disk data will be lost and dynamic IP addresses that are associated with the virtual machine will be updated.

Portale di AzureAzure portal

Per ridistribuire una macchina virtuale dal portale di Azure, selezionare la macchina virtuale e scorrere verso il basso fino alla sezione Supporto e risoluzione dei problemi.To redeploy a VM using the Azure portal, select your VM and scroll down to the Support + Troubleshooting section. Fare clic sul pulsante Ridistribuisci come nell'esempio seguente:Click the Redeploy button as in the following example:

Ridistribuire una macchina virtuale nel portale di Azure

Interfaccia della riga di comando di Azure 1.0Azure CLI 1.0

L'esempio seguente ridistribuisce la macchina virtuale denominata myVM nel gruppo di risorse myResourceGroup.The following example redeploys the VM named myVM in the resource group named myResourceGroup. Usare i valori personalizzati come di seguito:Use your own values as follows:

azure vm redeploy --resource-group myResourceGroup --name myVM

Interfaccia della riga di comando di Azure 2.0Azure CLI 2.0

L'esempio seguente usa il comando az vm redeploy per ridistribuire la macchina virtuale denominata myVM nel gruppo di risorse denominato myResourceGroup.The following example use az vm redeploy to redeploy the VM named myVM in the resource group named myResourceGroup. Usare i valori personalizzati come di seguito:Use your own values as follows:

az vm redeploy --resource-group myResourceGroup --name myVM

VM create con il modello di distribuzione classicaVMs created by using the Classic deployment model

Per risolvere gli errori di connessione SSH più comuni nelle VM create con il modello di distribuzione classica, provare a eseguire questi passaggi.Try these steps to resolve the most common SSH connection failures for VMs that were created by using the classic deployment model. Dopo ogni passaggio, tentare la riconnessione alla VM.After each step, try reconnecting to the VM.

  • Reimpostare l'accesso remoto dal portale di Azure.Reset remote access from the Azure portal. Nel portale di Azure, selezionare la macchina virtuale e fare clic sul pulsante Reimposta accesso remoto.On the Azure portal, select your VM and click the Reset Remote... button.
  • Riavviare la VM.Restart the VM. Nel portale di Azure selezionare la macchina virtuale e fare clic sul pulsante Riavvia.On the Azure portal, select your VM and click the Restart button.

  • Ridistribuire la VM su un nuovo nodo di Azure.Redeploy the VM to a new Azure node. Per informazioni su come eseguire questa operazione, vedere Ridistribuzione della macchina virtuale su un nuovo nodo di Azure.For information about how to redeploy a VM, see Redeploy virtual machine to new Azure node.

    Al termine di questa operazione i dati temporanei del disco andranno persi e gli indirizzi IP dinamici associati alla macchina virtuale saranno aggiornati.After this operation finishes, ephemeral disk data will be lost and dynamic IP addresses that are associated with the virtual machine will be updated.

  • Seguire le istruzioni in Come reimpostare una password o SSH per le macchine virtuali basate su Linux per:Follow the instructions in How to reset a password or SSH for Linux-based virtual machines to:

    • Reimpostare la password o la chiave SSH.Reset the password or SSH key.
    • Creare un account utente sudo.Create a sudo user account.
    • Reimpostare la configurazione SSH.Reset the SSH configuration.
  • Controllare l'integrità delle risorse della VM per eventuali problemi di piattaforma.Check the VM's resource health for any platform issues.
    Selezionare la macchina virtuale e scorrere verso il basso fino a Impostazioni > Controlla integrità.Select your VM and scroll down Settings > Check Health.

Risorse aggiuntiveAdditional resources