Delen via


Het oplossen van problemen met SSH-verbindingen naar een virtuele Azure Linux-machine waarop zich fouten voordoen, die afsluit vanwege fouten of die wordt geweigerd

Van toepassing op: ✔️ Virtuele Linux-machines

Dit artikel helpt u bij het vinden en corrigeren van de 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-toegangsextensie voor Linux gebruiken om verbindingsproblemen op te lossen.

Notitie

Was dit artikel nuttig? Uw input 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 stap voor probleemoplossing opnieuw verbinding te maken met de VIRTUELE machine.

  1. Stel de SSH-configuratie opnieuw in.
  2. Stel de referenties voor de gebruiker opnieuw in.
  3. Controleer of de regels voor netwerkbeveiligingsgroepen SSH-verkeer en roltoewijzing toestaan.
    • Zorg ervoor dat er een netwerkbeveiligingsgroepregel bestaat om SSH-verkeer toe te staan (standaard TCP-poort 22).
    • U kunt poortomleiding/toewijzing niet gebruiken zonder een Azure-load balancer te gebruiken.
    • Als u Microsoft Entra-id gebruikt voor het beheren van SSH-aanmeldingen, moet de gebruiker de rol Virtual Machine Administrator-aanmelding of Gebruikersaanmelding van virtuele machine toewijzen aan de resourcegroep die de virtuele machine en de bijbehorende resources bevat. Anders wordt de fout 'Machtiging geweigerd (publickey)' ontvangen. Zie Roltoewijzingen configureren voor de VIRTUELE machine die gebruikmaakt van Microsoft Entra-aanmelding voor meer informatie.
  4. Controleer de status van de VM-resource.
    • Zorg ervoor dat de VM in orde is.
    • Als u diagnostische gegevens over opstarten hebt ingeschakeld, controleert u of de VM geen opstartfouten rapporteert in de logboeken.
  5. Start de VIRTUELE machine opnieuw op.
  6. Implementeer de VIRTUELE machine opnieuw.

Lees verder voor gedetailleerdere stappen en uitleg over probleemoplossing.

Beschikbare methoden voor het oplossen van problemen met SSH-verbindingen

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

  • Azure Portal : dit is handig 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 aan uw VIRTUELE machine. In feite zijn 'kan geen SSH'-situaties specifiek zijn wat de seriële console is ontworpen om op te lossen. Meer informatie hieronder.
  • Gebruik Opdracht uitvoeren via Azure Portal : u kunt basisopdrachten uitvoeren met behulp van de functionaliteit Opdracht uitvoeren via Azure Portal. De uitvoer wordt geretourneerd naar de portal.
  • Azure CLI : als u zich al op de opdrachtregel bevindt, stelt u de SSH-configuratie of -referenties snel opnieuw in.
  • 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 VIRTUELE machine. Als u nog steeds geen verbinding kunt maken, voert u de volgende stap uit.

De Azure-portal gebruiken

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.

Als u wilt beginnen, selecteert u uw VIRTUELE machine in 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 SSH-configuratie of -referenties in Azure Portal.

De SSH-configuratie opnieuw instellen

Als u de SSH-configuratie opnieuw wilt instellen, selecteert u in de sectie Modus zoals in de vorige schermafbeelding en selecteert u Vervolgens Bijwerken.Reset configuration only Zodra deze actie is voltooid, probeert u opnieuw toegang te krijgen tot uw virtuele machine.

SSH-referenties voor een gebruiker opnieuw instellen

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

U kunt in dit menu ook een gebruiker maken met sudo-bevoegdheden op de virtuele machine. Voer een nieuwe gebruikersnaam en een gekoppeld wachtwoord of SSH-sleutel in en selecteer Vervolgens Bijwerken.

Beveiligingsregels controleren

Gebruik IP-stroomverificatie om te controleren of een regel in een netwerkbeveiligingsgroep verkeer naar of van een virtuele machine blokkeert. U kunt ook effectieve beveiligingsgroepsregels controleren om ervoor te zorgen dat de inkomende NSG-regel Toestaan bestaat en prioriteit krijgt voor de SSH-poort (standaard 22). Zie Effectieve beveiligingsregels gebruiken om problemen met vm-verkeersstromen 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 naar of van een virtuele machine wordt gerouteerd. U kunt ook effectieve routes bekijken om alle effectieve routes voor een netwerkinterface weer te geven. Zie 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 op tekst gebaseerde console voor virtuele Linux-machines. U kunt de console gebruiken om problemen met uw SSH-verbinding in een interactieve shell op te lossen. Zorg ervoor dat u voldoet aan de vereisten voor het gebruik van seriële console en voer de onderstaande opdrachten uit om verdere problemen met uw SSH-connectiviteit op te lossen.

Controleren of de SSH-service wordt uitgevoerd

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

sudo systemctl status sshd.service

Zie het volgende uitvoervoorbeeld. Controleer de servicestatus van de Active regel in de uitvoer. In de uitvoer worden ook de poort- en IP-adressen weergegeven waarop 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 gebruiken als hoofdmap of via de sudo opdracht om te controleren of de SSH-service wordt uitgevoerd op uw virtuele machine.

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

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

Notitie

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. In de uitvoer ziet u dat het SSHD-proces 829 luistert op zowel IPv4- als IPv6-adressen.

Controleren op welke poort SSH wordt uitgevoerd

In de bovenstaande opdrachtuitvoer ziet u 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, bekijkt u het standaardconfiguratiebestand ,etc/ssh/sshd_config met behulp van een van de volgende opdrachten:

grep -i port /etc/ssh/sshd_config

or

grep -i listen /etc/ssh/sshd_config

De uitvoer ziet er als volgt uit:

Port 22

Elke regel die in de uitvoer begint # , is een opmerking en kan veilig worden genegeerd. Als er niets wordt geretourneerd of als er 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 zijn uitgevoerd vanuit de seriële console, kunnen niet interactief worden uitgevoerd in de sectie Opdracht uitvoeren in Azure Portal. De uitvoer wordt geretourneerd naar Azure Portal. U hoeft geen 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 behulp van 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 galerie-installatiekopieën, is deze toegangsextensie al voor u geïnstalleerd en geconfigureerd.

SSH-configuratie opnieuw instellen

U kunt in eerste instantie proberen de SSH-configuratie opnieuw in te stellen op standaardwaarden en de SSH-server opnieuw op te starten op de virtuele machine. Hiermee wijzigt u de gebruikersnaam, het wachtwoord of de SSH-sleutels niet. 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 als volgt uw eigen waarden:

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 opnieuw in te stellen voor myUsername de waarde die is opgegeven in myPassword, op de vm met de naam myVM in myResourceGroup. Gebruik als volgt uw eigen waarden:

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

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

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 dat acties definieert 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 methode kunt u een opslagplaats maken met JSON-bestanden die vervolgens kunnen worden aangeroepen voor bepaalde scenario's.

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 de 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 als volgt uw eigen waarden:

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 giver-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 opnieuw ingesteld voor myUsername de waarde die is opgegeven in myPassword. Voer de volgende regels in uw settings.json bestand in met uw eigen waarden:

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

Of 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 opnieuw ingesteld voor myUsername 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 uw eigen waarden:

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

Nadat u het 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 als volgt uw eigen waarden:

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

SSH-configuratie opnieuw instellen

De SSHD-configuratie zelf is mogelijk onjuist geconfigureerd of er is een fout opgetreden in de service. 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 virtuele machine met de naam myVM in de resourcegroep met de naam myResourceGroup. Gebruik als volgt uw eigen vm- en resourcegroepnamen:

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

SSH-referenties voor een gebruiker opnieuw instellen

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

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

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

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

Een virtuele machine opnieuw opstarten

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

Azure Portal

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

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

Azure-CLI

In het volgende voorbeeld wordt az vm restart gebruikt om de virtuele machine met de naam myVM myResourceGroupin de resourcegroep opnieuw op te starten. Gebruik als volgt uw eigen waarden:

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

Een VM opnieuw implementeren

U kunt een VIRTUELE machine 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.

Notitie

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 Azure Portal, selecteert u uw VIRTUELE machine 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 Azure Portal.

Azure-CLI

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

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

Aanvullende bronnen

  • Als u na de stappen nog steeds geen SSH naar uw VIRTUELE machine kunt uitvoeren, raadpleegt u gedetailleerdere stappen voor probleemoplossing om aanvullende stappen te bekijken om uw probleem op te lossen.
  • Zie Problemen met toegang tot een toepassing oplossen die wordt uitgevoerd op een virtuele Azure-machine voor meer informatie over het oplossen van problemen met toegang tot toepassingen
  • Voor meer informatie over het oplossen van problemen met virtuele machines die zijn gemaakt met het klassieke implementatiemodel, raadpleegt u How to reset a password or SSH for Linux-based virtual machines.

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 Azure-feedbackcommunity.