Problemen oplossen met SSH-verbindingen met een Azure Linux-VM die uitvalt, uitvalt of wordt geweigerd

Dit artikel helpt u bij het vinden en oplossen van problemen die optreden als gevolg van SSH-fouten (Secure Shell), SSH-verbindingsfouten of SSH wordt geweigerd wanneer u verbinding probeert te maken met een virtuele Linux-machine (VM). U kunt de Azure Portal, Azure CLI of VM Access Extension voor Linux gebruiken om verbindingsproblemen op te lossen.

Opmerking

Was dit artikel nuttig? Uw inbreng is belangrijk voor ons. Gebruik de knop Feedback op deze pagina om ons te laten weten hoe goed dit artikel voor u heeft gewerkt of hoe we het kunnen verbeteren.

Snelle stappen voor probleemoplossing

Probeer na elke probleemoplossingsstap opnieuw verbinding te maken met de VM.

  1. Stel de SSH-configuratie opnieuw in.
  2. Stel de referenties voor de gebruiker opnieuw in.
  3. Controleer of de regels van de netwerkbeveiligingsgroep SSH-verkeer en roltoewijzing toestaan.
    • Zorg ervoor dat er een regel voor netwerkbeveiligingsgroep bestaat om SSH-verkeer toe te staan (standaard TCP-poort 22).
    • U kunt geen poortomleiding/-toewijzing gebruiken zonder een Azure-load balancer te gebruiken.
    • Als u Microsoft Entra ID gebruikt voor het beheren van SSH-aanmeldingen, moet aan de gebruiker de rol Aanmelden van virtuele machinebeheerder of Gebruikersaanmelding van virtuele machine worden toegewezen voor de resourcegroep die de VM en de bijbehorende resources bevat. Anders wordt de fout 'Permission denied (publickey)' ontvangen. Zie Roltoewijzingen configureren voor de VM die gebruikmaakt van Microsoft Entra aanmelding voor meer informatie.
  4. Controleer de status van de VM-resource.
  5. Start de VM opnieuw op.
  6. Implementeer de VM opnieuw.

Lees verder voor meer gedetailleerde stappen en uitleg over probleemoplossing.

Beschikbare methoden voor het oplossen van problemen met SSH-verbindingen

U kunt referenties, SSH-configuratie opnieuw instellen of problemen met de status van de SSH-service oplossen met behulp van een van de volgende methoden:

  • Azure Portal: ideaal als u de SSH-configuratie of SSH-sleutel snel opnieuw moet instellen en u de Azure-hulpprogramma's niet hebt geïnstalleerd.
  • Seriële azure-VM-console : de seriële console van de VM werkt ongeacht de SSH-configuratie en biedt u een interactieve console voor uw VM. In feite zijn 'kan niet SSH'-situaties specifiek zijn wat de seriële console is ontworpen om te helpen oplossen. Hieronder vindt u meer informatie.
  • Opdracht uitvoeren gebruiken via Azure Portal: u kunt basisopdrachten uitvoeren met behulp van de functionaliteit Opdracht uitvoeren via de Azure Portal. De uitvoer wordt geretourneerd naar de portal.
  • Azure CLI : als u zich al op de opdrachtregel bevindt, kunt u de SSH-configuratie of referenties snel opnieuw instellen. Als u met een klassieke VM werkt, kunt u de klassieke Azure CLI gebruiken.
  • Azure VMAccessForLinux-extensie : json-definitiebestanden maken en opnieuw gebruiken om de SSH-configuratie of gebruikersreferenties opnieuw in te stellen.

Probeer na elke stap voor probleemoplossing opnieuw verbinding te maken met uw VM. Als u nog steeds geen verbinding kunt maken, probeert u de volgende stap.

De Azure Portal gebruiken

De Azure Portal biedt een snelle manier om de SSH-configuratie of gebruikersreferenties opnieuw in te stellen zonder hulpprogramma's op uw lokale computer te installeren.

Selecteer eerst uw VM in de Azure Portal. Schuif omlaag naar de sectie Help en selecteer Wachtwoord opnieuw instellen zoals in het volgende voorbeeld:

Schermopname van het opnieuw instellen van de S S S H-configuratie of referenties in de Azure Portal.

De SSH-configuratie opnieuw instellen

Als u de SSH-configuratie opnieuw wilt instellen, selecteert u Reset configuration only in de sectie Modus zoals in de voorgaande schermopname en selecteert u vervolgens Bijwerken. Zodra deze actie is voltooid, probeert u opnieuw toegang te krijgen tot uw VM.

SSH-referenties voor een gebruiker opnieuw instellen

Als u de referenties van een bestaande gebruiker opnieuw wilt instellen, selecteert u Reset password of Reset SSH public key in de sectie Modus, zoals in de voorgaande schermopname. Geef de gebruikersnaam en een SSH-sleutel of een nieuw wachtwoord op en selecteer vervolgens Bijwerken.

U kunt ook vanuit dit menu een gebruiker met sudo-bevoegdheden maken op de VM. Voer een nieuwe gebruikersnaam en het bijbehorende wachtwoord of SSH-sleutel in en selecteer vervolgens Bijwerken.

Beveiligingsregels controleren

Gebruik IP-stroom controleren om te bevestigen of een regel in een netwerkbeveiligingsgroep verkeer van of naar een virtuele machine blokkeert. U kunt ook de effectieve regels voor beveiligingsgroepen controleren om te controleren of de NSG-regel 'Toestaan' bestaat en prioriteit heeft voor de SSH-poort (standaard 22). Zie Effectieve beveiligingsregels gebruiken om problemen met de verkeersstroom van vm's op te lossen voor meer informatie.

Routering controleren

Gebruik de volgende hopfunctie van Network Watcher om te bevestigen dat een route niet verhindert dat verkeer van of naar een virtuele machine wordt gerouteerd. U kunt ook effectieve routes bekijken om alle effectieve routes voor een netwerkinterface te bekijken. Zie Use effective routes to troubleshoot VM traffic flow (Effectieve routes gebruiken om problemen met vm-verkeersstromen op te lossen) voor meer informatie.

De seriële console van Azure VM gebruiken

De seriële console van Azure VM biedt toegang tot een console op basis van tekst voor virtuele Linux-machines. U kunt de console gebruiken om problemen met uw SSH-verbinding op te lossen in een interactieve shell. Zorg ervoor dat u voldoet aan de vereisten voor het gebruik van seriële console en probeer de onderstaande opdrachten uit om de problemen met uw SSH-connectiviteit verder op te lossen.

Controleer of de SSH-service wordt uitgevoerd

Als u de servicestatus wilt controleren, gebruikt u de volgende opdracht, die beschikbaar is in de meeste huidige Linux-distributies:

sudo systemctl status sshd.service

Zie het volgende uitvoervoorbeeld. Controleer de servicestatus van de Active regel in de uitvoer. De uitvoer toont ook de poort en IP-adressen waarnaar wordt geluisterd.

user@hostname:~$ sudo systemctl status sshd.service
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-06-23 17:44:36 UTC; 1 day 3h ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 829 (sshd)
      Tasks: 1 (limit: 9535)
     Memory: 5.1M
     CGroup: /system.slice/ssh.service
             └─829 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

Jun 23 17:44:35 ubu2004 systemd[1]: Starting OpenBSD Secure Shell server...
Jun 23 17:44:36 ubu2004 sshd[829]: Server listening on 0.0.0.0 port 22.
Jun 23 17:44:36 ubu2004 sshd[829]: Server listening on :: port 22.
Jun 23 17:44:36 ubu2004 systemd[1]: Started OpenBSD Secure Shell server.

Als deze opdracht niet beschikbaar is of onverwachte resultaten retourneert, gebruikt u andere beschikbare opdrachten. U kunt de ss opdracht als hoofdmap of via de sudo opdracht gebruiken om te controleren of de SSH-service wordt uitgevoerd op uw VM.

In het volgende voorbeeld ziet u hoe u de ss opdracht uitvoert via sudo:

sudo ss --listen --tcp --process --numeric | grep sshd

Opmerking

We raden de ss opdracht aan omdat de netstat opdracht is afgeschaft en niet altijd beschikbaar is in moderne distributies.

Als er uitvoer is, is SSH actief. Zie het volgende uitvoervoorbeeld:

$ sudo ss -ltpn | grep sshd
LISTEN    0         128                0.0.0.0:22               0.0.0.0:*        users:(("sshd",pid=829,fd=3))
LISTEN    0         128                   [::]:22                  [::]:*        users:(("sshd",pid=829,fd=4))

-ltpn is de verkorte vorm van de --listen --tcp --process –numeric argumenten. De uitvoer laat zien dat het SSHD-proces 829 luistert op zowel IPv4- als IPv6-adressen.

Controleren op welke poort SSH wordt uitgevoerd

De bovenstaande opdrachtuitvoer laat zien dat het SSHD-proces luistert op poort 22. Wanneer het SSHD-proces is geconfigureerd voor uitvoering op een andere poort, wordt de poort weergegeven in de uitvoer. Als u wilt controleren of de wijziging is aangebracht in het standaardconfiguratiebestand, controleert u het standaardconfiguratiebestand /etc/ssh/sshd_config met behulp van een van de volgende opdrachten:

grep -i port /etc/ssh/sshd_config

of

grep -i listen /etc/ssh/sshd_config

De uitvoer ziet er als volgt uit:

Port 22

Elke regel die begint met # in de uitvoer is een opmerking en kan veilig worden genegeerd. Als er niets wordt geretourneerd of als de regels opmerkingen zijn, wordt de standaardconfiguratie gebruikt. De standaardconfiguratie is om te luisteren naar alle IP-adressen op het systeem, op poort 22.

Opdracht uitvoeren via Azure Portal gebruiken

Als u geen opdrachten kunt uitvoeren via de seriële console, bijvoorbeeld wanneer alleen SSH-sleutels worden gebruikt voor verificatie, kan de functie Opdracht uitvoeren worden gebruikt om opdrachten uit te geven en de uitvoer weer te geven. Alle opdrachten die eerder vanuit de seriële console werden uitgevoerd, kunnen niet-interactief worden uitgevoerd in de sectie Opdracht uitvoeren in de Azure Portal. De uitvoer wordt geretourneerd naar de Azure Portal. Het is niet nodig om opdrachten uit te sudo voeren in de context Opdracht uitvoeren.

De Azure CLI gebruiken

Als u dat nog niet hebt gedaan, installeert u de nieuwste Azure CLI en meldt u zich aan bij een Azure-account met az login.

Als u een aangepaste Linux-schijfinstallatiekopieën hebt gemaakt en geüpload, controleert u of de Microsoft Azure Linux Agent versie 2.0.5 of hoger is geïnstalleerd. Voor VM's die zijn gemaakt met behulp van Galerie-installatiekopieën, is deze toegangsextensie al voor u geïnstalleerd en geconfigureerd.

SSH-configuratie opnieuw instellen

U kunt de SSH-configuratie in eerste instantie opnieuw instellen op standaardwaarden en de SSH-server opnieuw opstarten op de VM. Hiermee worden de naam, het wachtwoord of de SSH-sleutels van het gebruikersaccount niet gewijzigd. In het volgende voorbeeld wordt az vm user reset-ssh gebruikt om de SSH-configuratie opnieuw in te stellen op de VM met de naam myVM in myResourceGroup. Gebruik uw eigen waarden als volgt:

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

SSH-referenties voor een gebruiker opnieuw instellen

In het volgende voorbeeld wordt az vm user update gebruikt om de referenties voor myUsername opnieuw in te stellen op de waarde die is opgegeven in myPassword, op de VM met de naam myVM in myResourceGroup. Gebruik uw eigen waarden als volgt:

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

Als u SSH-sleutelverificatie gebruikt, kunt u de SSH-sleutel opnieuw instellen voor een bepaalde gebruiker. In het volgende voorbeeld wordt az vm access set-linux-user gebruikt om de SSH-sleutel bij te werken die is opgeslagen in ~/.ssh/id_rsa.pub voor de gebruiker met de naam myUsername, op de VM met de naam myVM in myResourceGroup. Gebruik uw eigen waarden als volgt:

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

De VMAccess-extensie gebruiken

De VM-toegangsextensie voor Linux leest in een json-bestand waarin acties worden gedefinieerd die moeten worden uitgevoerd. Deze acties omvatten het opnieuw instellen van SSHD, het opnieuw instellen van een SSH-sleutel of het toevoegen van een gebruiker. U gebruikt nog steeds de Azure CLI om de VMAccess-extensie aan te roepen, maar u kunt de json-bestanden desgewenst opnieuw gebruiken op meerdere VM's. Met deze benadering kunt u een opslagplaats met json-bestanden maken die vervolgens voor bepaalde scenario's kunnen worden aangeroepen.

SSHD opnieuw instellen

Maak een bestand met de naam settings.json met de volgende inhoud:

{
    "reset_ssh":True
}

Met behulp van de Azure CLI roept u vervolgens de VMAccessForLinux extensie aan om uw SSHD-verbinding opnieuw in te stellen door uw json-bestand op te geven. In het volgende voorbeeld wordt az vm extension set gebruikt om SSHD opnieuw in te stellen op de VM met de naam myVM in myResourceGroup. Gebruik uw eigen waarden als volgt:

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

SSH-referenties voor een gebruiker opnieuw instellen

Als SSHD correct lijkt te werken, kunt u de referenties voor een gebruiker opnieuw instellen. Als u het wachtwoord voor een gebruiker opnieuw wilt instellen, maakt u een bestand met de naam settings.json. In het volgende voorbeeld worden de referenties voor myUsername opnieuw ingesteld op de waarde die is opgegeven in myPassword. Voer de volgende regels in uw settings.json bestand in met behulp van uw eigen waarden:

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

Als u de SSH-sleutel voor een gebruiker opnieuw wilt instellen, maakt u eerst een bestand met de naam settings.json. In het volgende voorbeeld worden de referenties voor myUsername opnieuw ingesteld op de waarde die is opgegeven in myPassword, op de VM met de naam myVM in myResourceGroup. Voer de volgende regels in uw settings.json bestand in met behulp van uw eigen waarden:

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

Nadat u uw json-bestand hebt gemaakt, gebruikt u de Azure CLI om de VMAccessForLinux extensie aan te roepen om uw SSH-gebruikersreferenties opnieuw in te stellen door uw json-bestand op te geven. In het volgende voorbeeld worden referenties opnieuw ingesteld op de VM met de naam myVM in myResourceGroup. Gebruik uw eigen waarden als volgt:

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

De klassieke Azure CLI gebruiken

Als u dit nog niet hebt gedaan, installeert u de klassieke Azure CLI en maakt u verbinding met uw Azure-abonnement. Zorg ervoor dat u Resource Manager-modus als volgt gebruikt:

azure config mode arm

Als u een aangepaste Linux-schijfinstallatiekopieën hebt gemaakt en geüpload, controleert u of de Microsoft Azure Linux Agent versie 2.0.5 of hoger is geïnstalleerd. Voor VM's die zijn gemaakt met behulp van Galerie-installatiekopieën, is deze toegangsextensie al voor u geïnstalleerd en geconfigureerd.

SSH-configuratie opnieuw instellen

De SSHD-configuratie zelf is mogelijk onjuist geconfigureerd of de service heeft een fout opgetreden. U kunt SSHD opnieuw instellen om ervoor te zorgen dat de SSH-configuratie zelf geldig is. Het opnieuw instellen van SSHD moet de eerste stap voor probleemoplossing zijn die u uitvoert.

In het volgende voorbeeld wordt SSHD opnieuw ingesteld op een VM met de naam myVM in de resourcegroep met de naam myResourceGroup. Gebruik de namen van uw eigen VM en resourcegroep als volgt:

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

SSH-referenties voor een gebruiker opnieuw instellen

Als SSHD correct lijkt te werken, kunt u het wachtwoord voor een gebruiker opnieuw instellen. In het volgende voorbeeld worden de referenties voor myUsername opnieuw ingesteld op de waarde die is opgegeven in myPassword, op de VM met de naam myVM in myResourceGroup. Gebruik uw eigen waarden als volgt:

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

Als u SSH-sleutelverificatie gebruikt, kunt u de SSH-sleutel opnieuw instellen voor een bepaalde gebruiker. In het volgende voorbeeld wordt de SSH-sleutel bijgewerkt die is opgeslagen in ~/.ssh/id_rsa.pub voor de gebruiker met de naam myUsername, op de VM met de naam myVM in myResourceGroup. Gebruik uw eigen waarden als volgt:

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

Een VM opnieuw opstarten

Als u de SSH-configuratie en gebruikersreferenties opnieuw hebt ingesteld of als er een fout is opgetreden, kunt u proberen de VM opnieuw op te starten om onderliggende rekenproblemen op te lossen.

Azure Portal

Als u een virtuele machine opnieuw wilt opstarten met behulp van de Azure Portal, selecteert u uw VM en selecteert u vervolgens Opnieuw opstarten zoals in het volgende voorbeeld:

Schermopname van het opnieuw opstarten van een virtuele machine in de Azure Portal.

Azure CLI

In het volgende voorbeeld wordt az vm restart gebruikt om de VM met de naam myVM in de resourcegroep met de naam myResourceGroupopnieuw op te starten. Gebruik uw eigen waarden als volgt:

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

Klassieke Azure CLI

Belangrijk

Klassieke VM's worden op 1 september 2023 buiten gebruik gesteld

Als u IaaS-resources van ASM gebruikt, moet u de migratie voor 1 september 2023 voltooien. We raden u aan om sneller over te schakelen om te profiteren van de vele functieverbeteringen in Azure Resource Manager.

Zie Uw IaaS-resources migreren naar Azure Resource Manager op 1 september 2023 voor meer informatie.

In het volgende voorbeeld wordt de VM opnieuw opgestart met de naam myVM in de resourcegroep met de naam myResourceGroup. Gebruik uw eigen waarden als volgt:

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

Een VM opnieuw implementeren

U kunt een VM opnieuw implementeren naar een ander knooppunt in Azure, waardoor eventuele onderliggende netwerkproblemen kunnen worden opgelost. Zie Virtuele machine opnieuw implementeren naar een nieuw Azure-knooppunt voor meer informatie over het opnieuw implementeren van een virtuele machine.

Opmerking

Nadat deze bewerking is voltooid, gaan tijdelijke schijfgegevens verloren en worden dynamische IP-adressen die zijn gekoppeld aan de virtuele machine bijgewerkt.

Azure Portal

Als u een virtuele machine opnieuw wilt implementeren met behulp van de Azure Portal, selecteert u uw VM en schuift u omlaag naar de sectie Help. Selecteer Opnieuw implementeren zoals in het volgende voorbeeld:

Schermopname van het opnieuw implementeren van een virtuele machine in de Azure Portal.

Azure CLI

In het volgende voorbeeld wordt az vm redeploy gebruikt om de VM met de naam myVM in de resourcegroep met de naam myResourceGroupopnieuw te implementeren. Gebruik uw eigen waarden als volgt:

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

Klassieke Azure CLI

In het volgende voorbeeld wordt de VM met de naam myVM in de resourcegroep met de naam myResourceGroupopnieuw geïmplementeerd. Gebruik uw eigen waarden als volgt:

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

VM's die zijn gemaakt met behulp van het klassieke implementatiemodel

Belangrijk

Klassieke VM's worden op 1 september 2023 buiten gebruik gesteld

Als u IaaS-resources van ASM gebruikt, moet u de migratie voor 1 september 2023 voltooien. We raden u aan om sneller over te schakelen om te profiteren van de vele functieverbeteringen in Azure Resource Manager.

Zie Uw IaaS-resources migreren naar Azure Resource Manager op 1 september 2023 voor meer informatie.

Probeer deze stappen om de meest voorkomende SSH-verbindingsfouten op te lossen voor VM's die zijn gemaakt met behulp van het klassieke implementatiemodel. Probeer na elke stap opnieuw verbinding te maken met de VM.

  • Stel externe toegang opnieuw in vanaf de Azure Portal. Selecteer op de Azure Portal uw virtuele machine en selecteer vervolgens Extern opnieuw instellen....

  • Start de VM opnieuw op. Selecteer op de Azure Portal uw VM en selecteer Opnieuw opstarten.

  • Implementeer de VM opnieuw naar een nieuw Azure-knooppunt. Zie Virtuele machine opnieuw implementeren naar een nieuw Azure-knooppunt voor meer informatie over het opnieuw implementeren van een virtuele machine.

    Nadat deze bewerking is voltooid, gaan tijdelijke schijfgegevens verloren en worden dynamische IP-adressen die zijn gekoppeld aan de virtuele machine bijgewerkt.

  • Volg de instructies in Een wachtwoord of SSH voor virtuele Linux-machines opnieuw instellen op:

    • Stel het wachtwoord of de SSH-sleutel opnieuw in.
    • Maak een sudo-gebruikersaccount .
    • Stel de SSH-configuratie opnieuw in.
  • Controleer de resourcestatus van de VM op platformproblemen.
    Selecteer uw VM en schuif omlaag Instellingen>Status controleren.

Aanvullende bronnen

Contacteer ons voor hulp

Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Feedback-community van Azure.