Ett internt fel uppstår när du försöker ansluta till en virtuell Azure-dator via fjärrskrivbord
Den här artikeln beskriver ett fel som kan uppstå när du försöker ansluta till en virtuell dator (VM) i Microsoft Azure.
Obs!
Var den här artikeln användbar? Dina indata är viktiga för oss. Använd knappen Feedback på den här sidan för att berätta hur bra den här artikeln fungerade för dig eller hur vi kan förbättra den.
Symptom
Du kan inte ansluta till en virtuell Azure-dator med hjälp av RDP (Remote Desktop Protocol). Anslutningen fastnar i avsnittet Konfigurera fjärranslutning , eller så får du följande felmeddelande:
- Internt RDP-fel
- Ett internt fel har uppstått
- Den här datorn kan inte anslutas till fjärrdatorn. Försök ansluta igen. Om problemet kvarstår kontaktar du ägaren till fjärrdatorn eller nätverksadministratören
Orsak
Det här problemet kan inträffa av följande skäl:
- Den virtuella datorn kan ha attackerats.
- Det går inte att komma åt de lokala RSA-krypteringsnycklarna.
- TLS-protokollet är inaktiverat.
- Certifikatet är skadat eller har upphört att gälla.
Lösning
Om du vill felsöka det här problemet utför du stegen i följande avsnitt. Innan du börjar ska du ta en ögonblicksbild av OS-disken för den berörda virtuella datorn som en säkerhetskopia. Mer information finns i Ögonblicksbild av en disk.
Kontrollera RDP-säkerhet
Kontrollera först om nätverkssäkerhetsgruppen för RDP-port 3389 är oskyddad (öppen). Om den är oskyddad och den visar * som käll-IP-adress för inkommande, begränsar du RDP-porten till en angiven användares IP-adress och testar sedan RDP-åtkomst. Om detta misslyckas slutför du stegen i nästa avsnitt.
Använda seriell kontroll
Använd seriekonsolen eller reparera den virtuella datorn offline genom att koppla den virtuella datorns OS-disk till en virtuell återställningsdator.
Börja genom att ansluta till seriekonsolen och öppna en PowerShell-instans. Om seriekonsolen inte är aktiverad på den virtuella datorn går du till avsnittet Reparera den virtuella datorn offline .
Steg: 1 Kontrollera RDP-porten
I en PowerShell-instans använder du NETSTAT för att kontrollera om port 3389 används av andra program:
Netstat -anob |more
Om Termservice.exe använder 3389-port går du till steg 2. Om en annan tjänst eller ett annat program än Termservice.exe använder 3389-portar följer du dessa steg:
Stoppa tjänsten för det program som använder 3389-tjänsten:
Stop-Service -Name <ServiceName> -Force
Starta terminaltjänsten:
Start-Service -Name Termservice
Om programmet inte kan stoppas, eller om den här metoden inte gäller för dig, ändrar du porten för RDP:
Ändra porten:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -name PortNumber -value <Hexportnumber> Stop-Service -Name Termservice -Force Start-Service -Name Termservice
Ange brandväggen för den nya porten:
Set-NetFirewallRule -Name "RemoteDesktop-UserMode-In-TCP" -LocalPort <NEW PORT (decimal)>
Uppdatera nätverkssäkerhetsgruppen för den nya porten i Azure Portal RDP-porten.
Steg 2: Ange rätt behörigheter för det självsignerade RDP-certifikatet
I en PowerShell-instans kör du följande kommandon en i taget för att förnya det självsignerade RDP-certifikatet:
Import-Module PKI Set-Location Cert:\LocalMachine $RdpCertThumbprint = 'Cert:\LocalMachine\Remote Desktop\'+((Get-ChildItem -Path 'Cert:\LocalMachine\Remote Desktop\').thumbprint) Remove-Item -Path $RdpCertThumbprint Stop-Service -Name "SessionEnv" Start-Service -Name "SessionEnv"
Om du inte kan förnya certifikatet med den här metoden kan du försöka förnya det självsignerade RDP-certifikatet via en fjärranslutning:
Från en fungerande virtuell dator som har anslutning till den virtuella dator som har problem skriver du mmc i rutan Kör för att öppna Microsoft Management Console.
På arkivmenyn väljer du Lägg till/ta bort snapin-modul, väljer Certifikat och sedan Lägg till.
Välj Datorkonton, välj En annan dator och lägg sedan till IP-adressen för den virtuella datorn.
Gå till mappen Fjärrskrivbord\Certifikat , högerklicka på certifikatet och välj sedan Ta bort.
Starta om konfigurationstjänsten för fjärrskrivbord i en PowerShell-instans från seriekonsolen:
Stop-Service -Name "SessionEnv" Start-Service -Name "SessionEnv"
Återställ behörigheten för mappen MachineKeys.
remove-module psreadline md c:\temp icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c > c:\temp\BeforeScript_permissions.txt takeown /f "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys" /a /r icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "NT AUTHORITY\System:(F)" icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "NT AUTHORITY\NETWORK SERVICE:(R)" icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "BUILTIN\Administrators:(F)" icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c > c:\temp\AfterScript_permissions.txt Restart-Service TermService -Force
Starta om den virtuella datorn och försök sedan starta en fjärrskrivbordsanslutning till den virtuella datorn. Om felet fortfarande inträffar går du till nästa steg.
Steg 3: Aktivera alla TLS-versioner som stöds
RDP-klienten använder TLS 1.0 som standardprotokoll. Detta kan dock ändras till TLS 1.1, som har blivit den nya standarden. Om TLS 1.1 är inaktiverat på den virtuella datorn misslyckas anslutningen.
Aktivera TLS-protokollet i en CMD-instans:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f
Stoppa grupprincipuppdateringen tillfälligt för att förhindra att AD-principen skriver över ändringarna:
REG add "HKLM\SYSTEM\CurrentControlSet\Services\gpsvc" /v Start /t REG_DWORD /d 4 /f
Starta om den virtuella datorn så att ändringarna börjar gälla. Om problemet är löst kör du följande kommando för att återaktivera grupprincipen:
sc config gpsvc start= auto sc start gpsvc gpupdate /force
Om ändringen återställs innebär det att det finns en Active Directory-princip i företagsdomänen. Du måste ändra principen för att undvika att det här problemet uppstår igen.
Reparera den virtuella datorn offline
Koppla OS-disken till en virtuell återställningsdator
- Koppla OS-disken till en virtuell återställningsdator.
- När OS-disken är ansluten till den virtuella återställningsdatorn kontrollerar du att disken har flaggats som Online i diskhanteringskonsolen. Observera enhetsbeteckningen som är tilldelad till den anslutna OS-disken.
- Starta en fjärrskrivbordsanslutning till den virtuella återställningsdatorn.
Aktivera dumplogg och seriekonsol
Om du vill aktivera dumploggen och seriekonsolen kör du följande skript.
Öppna en upphöjd kommandotolksession (Kör som administratör).
Kör följande skript:
I det här skriptet förutsätter vi att enhetsbeteckningen som är tilldelad till den anslutna OS-disken är F. Ersätt den här enhetsbeteckningen med lämpligt värde för den virtuella datorn.
reg load HKLM\BROKENSYSTEM F:\windows\system32\config\SYSTEM REM Enable Serial Console bcdedit /store F:\boot\bcd /set {bootmgr} displaybootmenu yes bcdedit /store F:\boot\bcd /set {bootmgr} timeout 5 bcdedit /store F:\boot\bcd /set {bootmgr} bootems yes bcdedit /store F:\boot\bcd /ems {<BOOT LOADER IDENTIFIER>} ON bcdedit /store F:\boot\bcd /emssettings EMSPORT:1 EMSBAUDRATE:115200 REM Suggested configuration to enable OS Dump REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f reg unload HKLM\BROKENSYSTEM
Återställa behörigheten för Mappen MachineKeys
Öppna en upphöjd kommandotolksession (Kör som administratör).
Kör följande skript. I det här skriptet förutsätter vi att enhetsbeteckningen som är tilldelad till den anslutna OS-disken är F. Ersätt den här enhetsbeteckningen med lämpligt värde för den virtuella datorn.
Md F:\temp icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c > c:\temp\BeforeScript_permissions.txt takeown /f "F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys" /a /r icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "NT AUTHORITY\System:(F)" icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "NT AUTHORITY\NETWORK SERVICE:(R)" icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c /grant "BUILTIN\Administrators:(F)" icacls F:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c > c:\temp\AfterScript_permissions.txt
Aktivera alla TLS-versioner som stöds
Öppna en upphöjd kommandotolksession (Kör som administratör) och kör följande kommandon. Följande skript förutsätter att drivrutinsbeteckningen är tilldelad till den anslutna OS-disken är F. Ersätt den här enhetsbeteckningen med lämpligt värde för den virtuella datorn.
Kontrollera vilken TLS som är aktiverad:
reg load HKLM\BROKENSYSTEM F:\windows\system32\config\SYSTEM REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f
Om nyckeln inte finns eller om dess värde är 0 aktiverar du protokollet genom att köra följande skript:
REM Enable TLS 1.0, TLS 1.1 and TLS 1.2 REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f
Aktivera NLA:
REM Enable NLA REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 1 /f reg unload HKLM\BROKENSYSTEM
Koppla från OS-disken och återskapa den virtuella datorn och kontrollera sedan om problemet är löst.
Kontakta oss för att få hjälp
Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för