Procedura dettagliata di risoluzione dei problemi di connessione SSH a una macchina virtuale Linux in AzureDetailed SSH troubleshooting steps for issues connecting to a Linux VM in Azure

Se il client SSH non riesce a raggiungere il servizio SSH nella VM, i motivi possono essere molti.There are many possible reasons that the SSH client might not be able to reach the SSH service on the VM. Se è stata eseguita la procedura generica di risoluzione dei problemi SSH, per risolvere il problema di connessione è necessario ricorrere una procedura dettagliata.If you have followed through the more general SSH troubleshooting steps, you need to further troubleshoot the connection issue. Questo articolo descrive i passaggi dettagliati per individuare e risolvere gli eventuali errori della connessione SSH.This article guides you through detailed troubleshooting steps to determine where the SSH connection is failing and how to resolve it.

Operazioni preliminariTake preliminary steps

Il diagramma seguente illustrati i componenti coinvolti.The following diagram shows the components that are involved.

Diagramma che mostra i componenti del servizio SSH

I passaggi seguenti sono utili per isolare l'origine dell'errore e individuare le soluzioni.The following steps help you isolate the source of the failure and figure out solutions or workarounds.

  1. Controllare lo stato della VM nel portale.Check the status of the VM in the portal. Nel portale di Azure selezionare Macchine virtuali > Nome macchina virtuale.In the Azure portal, select Virtual machines > VM name.

    Nel riquadro di stato relativo alla VM deve essere visualizzata l'opzione In esecuzione.The status pane for the VM should show Running. Scorrere verso il basso per visualizzare le recenti attività di elaborazione e archiviazione e le risorse di rete.Scroll down to show recent activity for compute, storage, and network resources.

  2. Selezionare Impostazioni per esaminare gli endpoint, gli indirizzi IP, i gruppi di sicurezza di rete e altre impostazioni.Select Settings to examine endpoints, IP addresses, network security groups, and other settings.

    La macchina virtuale deve disporre di un endpoint definito per il traffico SSH che è possibile visualizzare in Endpoint o in Gruppo di sicurezza di rete.The VM should have an endpoint defined for SSH traffic that you can view in Endpoints or Network security group. Gli endpoint nelle VM create tramite Resource Manager vengono archiviati in un gruppo di sicurezza di rete.Endpoints in VMs that were created by using Resource Manager are stored in a network security group. Verificare anche che al gruppo di sicurezza di rete siano state applicate le regole e che nella subnet sia fatto riferimento ad esse.Also, verify that the rules have been applied to the network security group and that they're referenced in the subnet.

Per verificare la connettività di rete, controllare gli endpoint configurati e determinare se è possibile raggiungere la macchina virtuale tramite un altro protocollo, ad esempio HTTP o un altro servizio.To verify network connectivity, check the configured endpoints and see if you can reach the VM through another protocol, such as HTTP or another service.

Dopo questi passaggi, tentare nuovamente la connessione SSH.After these steps, try the SSH connection again.

Individuare l'origine del problemaFind the source of the issue

L'impossibilità per il client SSH nel computer in uso di raggiungere il servizio SSH nella macchina virtuale di Azure può essere dovuta problemi o errori di configurazione nelle origini seguenti:The SSH client on your computer might fail to reach the SSH service on the Azure VM due to issues or misconfigurations in the following areas:

Origine 1: computer client SSHSource 1: SSH client computer

Per escludere il computer in uso come origine dell'errore, verificare che sia in grado di stabilire connessioni SSH a un altro computer locale basato su Linux.To eliminate your computer as the source of the failure, verify that it can make SSH connections to another on-premises, Linux-based computer.

Diagramma che evidenzia i componenti del computer client SSH

Se non è possibile stabilire una connessione, eseguire i controlli seguenti sul computer:If the connection fails, check for the following issues on your computer:

  • Un'impostazione locale del firewall che blocca il traffico SSH in ingresso o in uscita (TCP 22)A local firewall setting that is blocking inbound or outbound SSH traffic (TCP 22)
  • Software proxy client installato localmente che impedisce le connessioni SSHLocally installed client proxy software that is preventing SSH connections
  • Software di monitoraggio della rete installato localmente che impedisce le connessioni SSHLocally installed network monitoring software that is preventing SSH connections
  • Altri tipi di software di sicurezza che eseguono il monitoraggio del traffico o consentono/non consentono tipi di traffico specificiOther types of security software that either monitor traffic or allow/disallow specific types of traffic

Se una delle seguenti condizioni è applicabile, disabilitare temporaneamente il software e tentare una connessione SSH a un computer locale per scoprire il motivo per cui la connessione è bloccata nel computer in uso.If one of these conditions apply, temporarily disable the software and try an SSH connection to an on-premises computer to find out the reason the connection is being blocked on your computer. Contattare quindi l'amministratore di rete per correggere le impostazioni del software in modo da consentire le connessioni SSH.Then work with your network administrator to correct the software settings to allow SSH connections.

Se si usa l'autenticazione del certificato, verificare la presenza delle seguenti autorizzazioni nella cartella .ssh della home directory:If you are using certificate authentication, verify that you have these permissions to the .ssh folder in your home directory:

  • Chmod 700 ~/.sshChmod 700 ~/.ssh
  • Chmod 644 ~/.ssh/*.pubChmod 644 ~/.ssh/*.pub
  • Chmod 600 ~/.ssh/id_rsa (o qualsiasi altro file in cui siano archiviate le chiavi private)Chmod 600 ~/.ssh/id_rsa (or any other files that have your private keys stored in them)
  • Chmod 644 ~/.ssh/known_hosts (contiene gli host con i quali è stabilita una connessione SSH)Chmod 644 ~/.ssh/known_hosts (contains hosts that you’ve connected to via SSH)

Origine 2: dispositivo periferico dell'organizzazioneSource 2: Organization edge device

Per escludere il dispositivo periferico dell'organizzazione come origine dell'errore, verificare che un computer connesso direttamente a Internet sia in grado di stabilire connessioni SSH alla macchina virtuale di Azure.To eliminate your organization edge device as the source of the failure, verify that a computer that's directly connected to the Internet can make SSH connections to your Azure VM. Se si accede alla VM tramite una connessione Azure ExpressRoute o VPN da sito a sito, passare al paragrafo Origine 4: gruppi di sicurezza di rete.If you are accessing the VM over a site-to-site VPN or an Azure ExpressRoute connection, skip to Source 4: Network security groups.

Diagramma che evidenzia il dispositivo periferico dell'organizzazione

Se non si dispone di un computer connesso direttamente a Internet, creare e usare una nuova VM di Azure nel relativo gruppo di risorse o servizio cloud.If you don't have a computer that is directly connected to the Internet, create a new Azure VM in its own resource group or cloud service and use it. Per altre informazioni, vedere Creare una macchina virtuale che esegue Linux in Azure.For more information, see Create a virtual machine running Linux in Azure. Dopo aver completato i test, eliminare il gruppo di risorse o la VM e il servizio cloud.Delete the resource group or VM and cloud service when you're done with your testing.

Se è possibile creare una connessione SSH con un computer connesso direttamente a Internet, controllare se nel dispositivo periferico dell'organizzazione si verificano le condizioni seguenti:If you can create an SSH connection with a computer that's directly connected to the Internet, check your organization edge device for:

  • Un firewall interno blocca il traffico SSH con InternetAn internal firewall that's blocking SSH traffic with the Internet
  • Un server proxy impedisce le connessioni SSHA proxy server that's preventing SSH connections
  • Un software per il rilevamento di intrusioni o il monitoraggio della rete in esecuzione sui dispositivi presenti nella rete perimetrale impedisce le connessioni SSHIntrusion detection or network monitoring software running on devices in your edge network that's preventing SSH connections

Rivolgersi all'amministratore di rete per correggere le impostazioni dei dispositivi periferici dell'organizzazione in modo da consentire traffico SSH con Internet.Work with your network administrator to correct the settings of your organization edge devices to allow SSH traffic with the Internet.

Origine 3: endpoint del servizio cloud e ACLSource 3: Cloud service endpoint and ACL

Nota

Questa origine si applica solo alle VM create con il modello di distribuzione classica.This source applies only to VMs that were created by using the classic deployment model. Per le VM create con Resource Manager, passare a Origine 4: gruppi di sicurezza di rete.For VMs that were created by using Resource Manager, skip to source 4: Network security groups.

Per escludere l'endpoint di servizio cloud e l'elenco di controllo di accesso (ACL) come possibile origine dell'errore, verificare che un'altra macchina virtuale di Azure che si trova nella stessa rete virtuale sia in grado di stabilire connessioni SSH alla macchina virtuale di Azure.To eliminate the cloud service endpoint and ACL as the source of the failure, verify that another Azure VM in the same virtual network can make SSH connections to your VM.

Diagramma che evidenzia l'endpoint del servizio cloud e l'elenco di controllo di accesso

Se non si dispone di un'altra macchina virtuale nella stessa rete virtuale, è possibile crearne facilmente una nuova.If you don't have another VM in the same virtual network, you can easily create one. Per altre informazioni, vedere Creare una VM Linux in Azure usando l'interfaccia della riga di comando.For more information, see Create a Linux VM on Azure using the CLI. Dopo aver completato i test, eliminare la macchina virtuale aggiuntiva.Delete the extra VM when you are done with your testing.

Se è possibile creare una connessione SSH con una macchina virtuale presente nella stessa rete virtuale, verificare quanto segue:If you can create an SSH connection with a VM in the same virtual network, check the following areas:

  • La configurazione dell'endpoint per il traffico SSH sulla macchina virtuale di destinazione.The endpoint configuration for SSH traffic on the target VM. La porta TCP privata dell'endpoint dovrebbe corrispondere alla porta TCP su cui è in ascolto il servizio SSH nella macchina virtualeThe private TCP port of the endpoint should match the TCP port on which the SSH service on the VM is listening. (per impostazione predefinita è la porta 22).(The default port is 22). Verificare il numero di porta TCP SSH nel portale di Azure selezionando Macchine virtuali > Nome macchina virtuale > Impostazioni > Endpoint.Verify the SSH TCP port number in the Azure portal by selecting Virtual machines > VM name > Settings > Endpoints.
  • L'ACL relativa all'endpoint per il traffico SSH sulla macchina virtuale di destinazione.The ACL for the SSH traffic endpoint on the target virtual machine. Gli ACL consentono di specificare il traffico in ingresso da Internet consentito o negato in base al relativo indirizzo IP di origine.An ACL enables you to specify allowed or denied incoming traffic from the Internet, based on its source IP address. ACL configurati in modo errato possono impedire il traffico SSH in ingresso nell'endpoint.Misconfigured ACLs can prevent incoming SSH traffic to the endpoint. Verificare gli ACL per assicurarsi che il traffico in ingresso dagli indirizzi IP pubblici del proxy o da altri server periferici sia consentito.Check your ACLs to ensure that incoming traffic from the public IP addresses of your proxy or other edge server is allowed. Per altre informazioni, vedere Informazioni sugli elenchi di controllo di accesso (ACL) di rete.For more information, see About network access control lists (ACLs).

Per escludere l'endpoint come origine del problema, rimuovere l'endpoint corrente, creare un nuovo endpoint e specificare il nome SSH (porta TCP 22 per il numero di porta pubblica e privata).To eliminate the endpoint as a source of the problem, remove the current endpoint, create another endpoint, and specify the SSH name (TCP port 22 for the public and private port number). Per altre informazioni, vedere Configurare endpoint in una macchina virtuale in Azure.For more information, see Set up endpoints on a virtual machine in Azure.

Origine 4: gruppi di sicurezza di reteSource 4: Network security groups

I gruppi di sicurezza di rete consentono di avere un controllo più granulare del traffico in entrata e in uscita consentito.Network security groups enable you to have more granular control of allowed inbound and outbound traffic. È possibile creare regole che si estendono alle subnet e ai servizi cloud in una rete virtuale di Azure.You can create rules that span subnets and cloud services in an Azure virtual network. Controllare le regole del gruppo di sicurezza di rete per garantire che sia consentito il traffico SSH da Internet.Check your network security group rules to ensure that SSH traffic to and from the Internet is allowed. Per altre informazioni, vedere Informazioni sui gruppi di sicurezza di rete.For more information, see About network security groups.

È anche possibile usare la funzione di verifica IP per convalidare la configurazione del gruppo di sicurezza di rete.You can also use IP Verify to validate the NSG configuration. Per altre informazioni, vedere Panoramica del monitoraggio della rete in Azure.For more information, see Azure network monitoring overview.

Origine 5: macchina virtuale di Azure basata su LinuxSource 5: Linux-based Azure virtual machine

L'ultima origine di possibili problemi corrisponde alla stessa macchina virtuale di Azure.The last source of possible problems is the Azure virtual machine itself.

Diagramma che evidenzia la macchina virtuale di Azure basata su Linux

Se ancora non è stato fatto, seguire le istruzioni per reimpostare la password o l'SSH per le macchine virtuali basate su Linux.If you haven't done so already, follow the instructions to reset a password or SSH for Linux-based virtual machines.

Provare nuovamente la connessione dal computer.Try connecting from your computer again. Se ancora non riesce, alcuni dei problemi possibili sono:If it still fails, the following are some of the possible issues:

  • Il servizio SSH non è in esecuzione sulla macchina virtuale di destinazione.The SSH service is not running on the target virtual machine.
  • Il servizio SSH non è in ascolto sulla porta TCP 22.The SSH service is not listening on TCP port 22. Per verificare questo aspetto, installare un client telnet nel computer locale ed eseguire "telnet cloudServiceName.cloudapp.net 22".To test, install a telnet client on your local computer and run "telnet cloudServiceName.cloudapp.net 22". In questo modo è possibile determinare se la macchina virtuale consente comunicazioni in ingresso e in uscita per l'endpoint SSH.This step determines if the virtual machine allows inbound and outbound communication to the SSH endpoint.
  • Il firewall locale nella macchina virtuale di destinazione include regole che impediscono il traffico SSH in ingresso o in uscita.The local firewall on the target virtual machine has rules that are preventing inbound or outbound SSH traffic.
  • Un software per il rilevamento di intrusioni o il monitoraggio della rete in esecuzione sulla macchina virtuale di Azure impedisce le connessioni SSH.Intrusion detection or network monitoring software that's running on the Azure virtual machine is preventing SSH connections.

Risorse aggiuntiveAdditional resources

Per ulteriori informazioni sulla risoluzione dei problemi di accesso dell'applicazione, vedere Risoluzione dei problemi di accesso a un'applicazione in esecuzione su una macchina virtuale di AzureFor more information about troubleshooting application access, see Troubleshoot access to an application running on an Azure virtual machine