Dela via


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

  1. I en PowerShell-instans använder du NETSTAT för att kontrollera om port 3389 används av andra program:

    Netstat -anob |more
    
  2. 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:

    1. Stoppa tjänsten för det program som använder 3389-tjänsten:

      Stop-Service -Name <ServiceName> -Force
      
    2. Starta terminaltjänsten:

      Start-Service -Name Termservice
      
  3. Om programmet inte kan stoppas, eller om den här metoden inte gäller för dig, ändrar du porten för RDP:

    1. Ä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
      
    2. Ange brandväggen för den nya porten:

      Set-NetFirewallRule -Name "RemoteDesktop-UserMode-In-TCP" -LocalPort <NEW PORT (decimal)>
      
    3. 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

  1. 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"
    
  2. 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:

    1. 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.

    2. arkivmenyn väljer du Lägg till/ta bort snapin-modul, väljer Certifikat och sedan Lägg till.

    3. Välj Datorkonton, välj En annan dator och lägg sedan till IP-adressen för den virtuella datorn.

    4. Gå till mappen Fjärrskrivbord\Certifikat , högerklicka på certifikatet och välj sedan Ta bort.

    5. Starta om konfigurationstjänsten för fjärrskrivbord i en PowerShell-instans från seriekonsolen:

      Stop-Service -Name "SessionEnv"
      
      Start-Service -Name "SessionEnv"
      
  3. Å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
    
  4. 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.

  1. 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
    
  2. 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
    
  3. 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

  1. Koppla OS-disken till en virtuell återställningsdator.
  2. 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.
  3. 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.

  1. Öppna en upphöjd kommandotolksession (Kör som administratör).

  2. 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

  1. Öppna en upphöjd kommandotolksession (Kör som administratör).

  2. 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

  1. Ö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.

  2. 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
    
  3. 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
    
  4. 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
    
  5. 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.