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.
- Stel de SSH-configuratie opnieuw in.
- Stel de referenties voor de gebruiker opnieuw in.
- 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.
- Controleer de status van de VM-resource.
- Zorg ervoor dat de VM meldt dat deze in orde is.
- Als u diagnostische gegevens over opstarten hebt ingeschakeld, controleert u of de VM geen opstartfouten rapporteert in de logboeken.
- Start de VM opnieuw op.
- 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:
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:
Azure CLI
In het volgende voorbeeld wordt az vm restart gebruikt om de VM met de naam myVM
in de resourcegroep met de naam myResourceGroup
opnieuw 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:
Azure CLI
In het volgende voorbeeld wordt az vm redeploy gebruikt om de VM met de naam myVM
in de resourcegroep met de naam myResourceGroup
opnieuw 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 myResourceGroup
opnieuw 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
- Als u na het uitvoeren van de stappen nog steeds geen SSH naar uw VM kunt uitvoeren, raadpleegt u gedetailleerdere stappen voor probleemoplossing om aanvullende stappen te bekijken om uw probleem op te lossen.
- Zie Problemen oplossen met toegang tot een toepassing die wordt uitgevoerd op een virtuele Azure-machine voor meer informatie over het oplossen van problemen met toegang tot toepassingen
- Zie Een wachtwoord of SSH opnieuw instellen voor virtuele machines die zijn gemaakt met behulp van het klassieke implementatiemodel voor meer informatie over het oplossen van problemen met virtuele machines die zijn gemaakt met behulp van het klassieke implementatiemodel.
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.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor