Procedura dettagliata di risoluzione dei problemi SSH per i problemi di connessione a una macchina virtuale Linux in Azure

Esistono molti possibili motivi per cui il client SSH potrebbe non essere in grado di raggiungere il servizio SSH nella macchina virtuale. Se sono state seguite le procedure di risoluzione dei problemi SSHpiù generali, è necessario risolvere ulteriormente il problema di connessione. In questo articolo vengono fornite istruzioni dettagliate per la risoluzione dei problemi per determinare il punto in cui la connessione SSH non riesce e come risolverla.

Eseguire la procedura preliminare

Il diagramma seguente mostra i componenti coinvolti.

Diagramma che mostra i componenti del servizio SSH

I passaggi seguenti consentono di isolare l'origine dell'errore e di individuare soluzioni o soluzioni alternative.

  1. Controllare lo stato della macchina virtuale nel portale. Nel portale di Azureselezionare Virtual machines VM > name.

    Nel riquadro di stato per la macchina virtuale dovrebbe essere visualizzato In esecuzione. Scorrere verso il basso per visualizzare le attività recenti per le risorse di calcolo, archiviazione e rete.

  2. Selezionare Impostazioni per esaminare endpoint, indirizzi IP, gruppi di sicurezza di rete e altre impostazioni.

    La macchina virtuale deve avere un endpoint definito per il traffico SSH che è possibile visualizzare in Endpoint o Gruppo di sicurezza di rete. Gli endpoint nelle macchine virtuali create tramite Gestione risorse vengono archiviati in un gruppo di sicurezza di rete. Verificare che le regole siano state applicate al gruppo di sicurezza di rete e vi si fa riferimento nella subnet.

Per verificare la connettività di rete, controllare gli endpoint configurati e verificare se è possibile connettersi alla macchina virtuale tramite un altro protocollo, ad esempio HTTP o un altro servizio.

Dopo questi passaggi, provare di nuovo la connessione SSH.

Individuare l'origine del problema

Il client SSH nel computer potrebbe non riuscire a connettersi al servizio SSH nella macchina virtuale di Azure a causa di problemi o errori di configurazione nelle aree seguenti:

Origine 1: computer client SSH

Per eliminare il computer come origine dell'errore, verificare che sia in grado di effettuare connessioni SSH a un altro computer locale basato su Linux.

Diagramma che evidenzia i componenti dei computer client SSH

Se la connessione non riesce, verificare la presenza dei seguenti problemi nel computer:

  • Impostazione del firewall locale che blocca il traffico SSH in ingresso o in uscita (TCP 22)
  • Software proxy client installato localmente che impedisce le connessioni SSH
  • Software di monitoraggio di rete installato localmente che impedisce le connessioni SSH
  • Altri tipi di software di sicurezza che monitorano il traffico o consentono/non consentono tipi specifici di traffico

Se si verifica una di queste condizioni, disabilitare temporaneamente il software e provare una connessione SSH a un computer locale per scoprire il motivo per cui la connessione viene bloccata nel computer. Contattare quindi l'amministratore di rete per correggere le impostazioni software per consentire le connessioni SSH.

Se si utilizza l'autenticazione certificato, verificare di disporre delle autorizzazioni seguenti per la cartella .ssh nella home directory:

  • Chmod 700 ~/.ssh
  • Chmod 644 ~/.ssh/ * .pub
  • Chmod 600 ~/.ssh/id_rsa (o qualsiasi altro file in cui sono archiviate le chiavi private)
  • Chmod 644 ~/.ssh/known_hosts (contiene gli host a cui si è connessi tramite SSH)

Origine 2: dispositivo perimetrale dell'organizzazione

Per eliminare il dispositivo perimetrale dell'organizzazione come origine dell'errore, verificare che un computer connesso direttamente a Internet possa effettuare connessioni SSH alla macchina virtuale di Azure. Se si accede alla macchina virtuale tramite una VPN da sito a sito o una connessione Azure ExpressRoute, passare a Origine 4: Gruppi di sicurezza di rete.

Diagramma che evidenzia il dispositivo perimetrale dell'organizzazione

Se non si dispone di un computer connesso direttamente a Internet, creare una nuova macchina virtuale di Azure nel proprio gruppo di risorse o nel servizio cloud e usare la nuova macchina virtuale. Per ulteriori informazioni, vedere Creare una macchina virtuale che esegue Linux in Azure. Al termine dei test, eliminare il gruppo di risorse o la macchina virtuale e il servizio cloud.

Se è possibile creare una connessione SSH con un computer connesso direttamente a Internet, controllare il dispositivo perimetrale dell'organizzazione per:

  • Un firewall interno che blocca il traffico SSH con Internet
  • Un server proxy che impedisce le connessioni SSH
  • Software di rilevamento delle intrusioni o di monitoraggio della rete in esecuzione nei dispositivi della rete perimetrale che impedisce le connessioni SSH

Contattare l'amministratore di rete per correggere le impostazioni dei dispositivi perimetrali dell'organizzazione per consentire il traffico SSH con Internet.

Origine 3: endpoint del servizio cloud e ACL

Importante

Le macchine virtuali classiche verranno ritirate il 1° marzo 2023.

Se si utilizzano risorse IaaS di ASM, completare la migrazione entro il 1° marzo 2023. Ti invitiamo a eseguire il passaggio prima per sfruttare i numerosi miglioramenti apportati alle funzionalità in Azure Resource Manager.

Per ulteriori informazioni, vedere Eseguire la migrazione delle risorse IaaS a Azure Resource Manager entro il 1° marzo 2023.

Nota

Questa origine si applica solo alle macchine virtuali create utilizzando il modello di distribuzione classico. Per le macchine virtuali create tramite Gestione risorse, passare all'origine 4: Gruppi di sicurezza di rete.

Per eliminare l'endpoint del servizio cloud e l'ACL come origine dell'errore, verificare che un'altra macchina virtuale di Azure nella stessa rete virtuale possa connettersi tramite SSH.

Diagramma che evidenzia l'endpoint del servizio cloud e l'ACL

Se non si dispone di un'altra macchina virtuale nella stessa rete virtuale, è possibile crearne facilmente una. Per ulteriori informazioni, vedere Create a Linux VM on Azure using the CLI. Eliminare la macchina virtuale aggiuntiva al termine dei test.

Se è possibile creare una connessione SSH con una macchina virtuale nella stessa rete virtuale, controllare le aree seguenti:

  • Configurazione dell'endpoint per il traffico SSH nella macchina virtuale di destinazione. La porta TCP privata dell'endpoint deve corrispondere alla porta TCP su cui il servizio SSH nella macchina virtuale è in attesa. La porta predefinita è 22. Verificare il numero di porta TCP SSH nel portale di Azure selezionando Virtual machines > VM name > Settings > Endpoints.
  • ACL per l'endpoint del traffico SSH nella macchina virtuale di destinazione. Un ACL consente di specificare il traffico in ingresso consentito o negato da Internet, in base al relativo indirizzo IP di origine. Gli ACL non configurati correttamente possono impedire il traffico SSH in ingresso verso l'endpoint. Controllare gli elenchi di controllo di accesso per assicurarsi che sia consentito il traffico in ingresso dagli indirizzi IP pubblici del proxy o di un altro server perimetrale. Per ulteriori informazioni, vedere About network access control lists (ACL).

Per eliminare l'endpoint come origine del problema, rimuovere l'endpoint corrente, creare un altro endpoint e specificare il nome SSH (porta TCP 22 per il numero di porta pubblica e privata). Per ulteriori informazioni, vedere Set up endpoints on a virtual machine in Azure.

Origine 4: gruppi di sicurezza di rete

I gruppi di sicurezza di rete consentono di avere un controllo più granulare del traffico in ingresso e in uscita consentito. È possibile creare regole che si estendono su subnet e servizi cloud in una rete virtuale di Azure. Controllare le regole del gruppo di sicurezza di rete per assicurarsi che il traffico SSH da e verso Internet sia consentito. Per ulteriori informazioni, vedere Informazioni sui gruppi di sicurezza di rete.

È inoltre possibile utilizzare La verifica IP per convalidare la configurazione del gruppo di protezione dei criteri di rete. Per altre informazioni, vedi Panoramica del monitoraggio della rete di Azure.

Origine 5: macchina virtuale Azure basata su Linux

L'ultima fonte di problemi possibili è la macchina virtuale di Azure stessa.

Diagramma che evidenzia la macchina virtuale Azure basata su Linux

Se non l'hai già fatto, segui le istruzioni per reimpostare una password macchine virtuali basate su Linux.

Provare di nuovo a connettersi dal computer. Se il problema persiste, di seguito sono riportati alcuni dei possibili problemi:

  • Il servizio SSH non è in esecuzione nella macchina virtuale di destinazione.
  • Il servizio SSH non è in ascolto sulla porta TCP 22. Per eseguire il test, installare un client telnet nel computer locale ed eseguire "telnet cloudServiceName.cloudapp.net 22". Questo passaggio determina se la macchina virtuale consente la comunicazione in ingresso e in uscita con l'endpoint SSH.
  • Il firewall locale nella macchina virtuale di destinazione include regole che impediscono il traffico SSH in ingresso o in uscita.
  • Il rilevamento delle intrusioni o il software di monitoraggio della rete in esecuzione nella macchina virtuale di Azure impedisce le connessioni SSH.

Risorse aggiuntive

Per ulteriori informazioni sulla risoluzione dei problemi di accesso alle applicazioni, vedere Risolvere i problemi di accesso a un'applicazione in esecuzione in una macchina virtuale di Azure