Ein interner Fehler tritt auf, wenn Sie versuchen, über Remotedesktop eine Verbindung mit einer Azure-VM herzustellen.

In diesem Artikel wird ein Fehler beschrieben, der möglicherweise auftritt, wenn Sie versuchen, eine Verbindung mit einem virtuellen Computer (VM) in Microsoft Azure herzustellen.

Problembeschreibung

Sie können keine Verbindung mit einer Azure VM mithilfe des Remotedesktopprotokolls (RDP) herstellen. Die Verbindung bleibt im Abschnitt Konfigurieren der Remoteverbindung hängen, oder Sie erhalten die folgende Fehlermeldung:

  • Interner RDP-Fehler
  • Interner Fehler
  • Dieser Computer kann nicht mit dem Remotecomputer verbunden werden. Versuchen Sie erneut, eine Verbindung zu herstellen. Wenn das Problem weiterhin besteht, wenden Sie sich an den Besitzer des Remotecomputers oder ihren Netzwerkadministrator.

Ursache

Dieses Problem kann aus den folgenden Gründen auftreten:

  • Der virtuelle Computer wurde möglicherweise angegriffen.
  • Auf die lokalen RSA-Verschlüsselungsschlüssel kann nicht zugegriffen werden.
  • Das TLS-Protokoll ist deaktiviert.
  • Das Zertifikat ist beschädigt oder abgelaufen.

Lösung

Führen Sie die Schritte in den folgenden Abschnitten aus, um dieses Problem zu beheben. Bevor Sie beginnen, erstellen Sie eine Momentaufnahme des Betriebssystemdatenträgers des betroffenen virtuellen Computers als Sicherung. Weitere Informationen finden Sie unter Snapshot a disk.

Überprüfen der RDP-Sicherheit

Überprüfen Sie zunächst, ob die Netzwerksicherheitsgruppe für RDP-Port 3389 ungesichert (geöffnet) ist. Wenn sie ungesichert ist und als Quell-IP-Adresse für eingehenden Datenverkehr angezeigt wird, beschränken Sie den RDP-Port auf die IP-Adresse eines bestimmten Benutzers, und testen Sie dann den * RDP-Zugriff. Wenn dies fehlschlägt, führen Sie die Schritte im nächsten Abschnitt aus.

Verwenden des seriellen Steuerelements

Verwenden Sie die serielle Konsole, oder reparieren Sie den virtuellen Computer offline, indem Sie den Betriebssystemdatenträger des virtuellen Computers an einen Wiederherstellungs-VM anfügen.

Stellen Sie zunächst eine Verbindung mit der Seriellen Konsole auf, und öffnen Sie eine PowerShell-Instanz. Wenn die serielle Konsole auf Ihrem virtuellen Computer nicht aktiviert ist, wechseln Sie zum Abschnitt Reparieren des OFFLINE-Computers.

Schritt: 1 Überprüfen des RDP-Ports

  1. Überprüfen Sie in einer PowerShell-Instanz mithilfe der NETSTAT, ob Port 3389 von anderen Anwendungen verwendet wird:

    Netstat -anob |more
    
  2. Wenn Termservice.exe 3389-Port verwendet, wechseln Sie zu Schritt 2. Wenn ein anderer Dienst oder eine andere Anwendung als Termservice.exe 3389-Port verwendet, führen Sie die folgenden Schritte aus:

    1. Beenden Sie den Dienst für die Anwendung, die den 3389-Dienst verwendet:

      Stop-Service -Name <ServiceName> -Force
      
    2. Starten Sie den Terminaldienst:

      Start-Service -Name Termservice
      
  3. Wenn die Anwendung nicht beendet werden kann oder wenn diese Methode nicht für Sie gilt, ändern Sie den Port für RDP:

    1. Ändern des Ports:

      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. Legen Sie die Firewall für den neuen Port ein:

      Set-NetFirewallRule -Name "RemoteDesktop-UserMode-In-TCP" -LocalPort <NEW PORT (decimal)>
      
    3. Aktualisieren Sie die Netzwerksicherheitsgruppe für den neuen Port im Azure-Portal-RDP-Port.

Schritt 2: Festlegen der richtigen Berechtigungen für das selbst signierte RdP-Zertifikat

  1. Führen Sie in einer PowerShell-Instanz die folgenden Befehle eins nach dem anderen aus, um das selbst signierte RDP-Zertifikat zu erneuern:

    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. Wenn Sie das Zertifikat nicht mithilfe dieser Methode verlängern können, versuchen Sie, das selbst signierte ZERTIFIKAT remote zu erneuern:

    1. Geben Sie auf einem funktionierenden virtuellen Computer mit Konnektivität mit dem virtuellen Computer, auf dem Probleme auftreten, mmc in das Feld Ausführen ein, um die Microsoft-Verwaltungskonsole zu öffnen.

    2. Wählen Sie im Menü Datei die Option Snap-In hinzufügen/entfernen aus, wählen Sie Zertifikate aus, und wählen Sie dann Hinzufügen aus.

    3. Wählen Sie Computerkonten aus, wählen Sie Einen anderen Computer aus, und fügen Sie dann die IP-Adresse des Problemcomputers hinzu.

    4. Wechseln Sie zum Ordner Remotedesktop\Zertifikate, klicken Sie mit der rechten Maustaste auf das Zertifikat, und wählen Sie dann Löschen aus.

    5. Starten Sie in einer PowerShell-Instanz über die serielle Konsole den Remotedesktopkonfigurationsdienst neu:

      Stop-Service -Name "SessionEnv"
      
      Start-Service -Name "SessionEnv"
      
  3. Setzen Sie die Berechtigung für den Ordner MachineKeys zurück.

    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. Starten Sie den virtuellen Computer neu, und versuchen Sie dann, eine Remotedesktopverbindung mit dem virtuellen Computer zu starten. Wenn der Fehler weiterhin auftritt, fahren Sie mit dem nächsten Schritt fort.

Schritt 3: Aktivieren aller unterstützten TLS-Versionen

Der RDP-Client verwendet TLS 1.0 als Standardprotokoll. Dies kann jedoch in TLS 1.1 geändert werden, das zum neuen Standard geworden ist. Wenn TLS 1.1 auf dem virtuellen Computer deaktiviert ist, kann die Verbindung nicht ausgeführt werden.

  1. Aktivieren Sie in einer CMD-Instanz das TLS-Protokoll:

    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. Um zu verhindern, dass die AD-Richtlinie die Änderungen überschreiben kann, beenden Sie das Gruppenrichtlinienupdate vorübergehend:

    REG add "HKLM\SYSTEM\CurrentControlSet\Services\gpsvc" /v Start /t REG_DWORD /d 4 /f
    
  3. Starten Sie den virtuellen Computer neu, damit die Änderungen wirksam werden. Wenn das Problem behoben ist, führen Sie den folgenden Befehl aus, um die Gruppenrichtlinie erneut zu aktivieren:

    sc config gpsvc start= auto sc start gpsvc
    
    gpupdate /force
    

    Wenn die Änderung wiederhergestellt wird, bedeutet dies, dass es eine Active Directory-Richtlinie in Ihrer Unternehmensdomäne gibt. Sie müssen diese Richtlinie ändern, um zu verhindern, dass dieses Problem erneut auftritt.

Reparieren des virtuellen Computers Offline

Anfügen des Betriebssystemdatenträgers an eine Wiederherstellungs-VM

  1. Fügen Sie den Betriebssystemdatenträger an einen Wiederherstellungs-VM an.
  2. Nachdem der Betriebssystemdatenträger an die Wiederherstellungs-VM angefügt wurde, stellen Sie sicher, dass der Datenträger in der Datenträgerverwaltungskonsole als Online gekennzeichnet ist. Notieren Sie sich den Laufwerkbuchstaben, der dem angefügten Betriebssystemdatenträger zugewiesen ist.
  3. Starten Sie eine Remotedesktopverbindung mit der Wiederherstellungs-VM.

Aktivieren des Dumpprotokolls und der seriellen Konsole

Führen Sie das folgende Skript aus, um das Dumpprotokoll und die serielle Konsole zu aktivieren.

  1. Öffnen Sie eine Eingabeaufforderungssitzung mit erhöhten Rechten (Als Administrator ausführen).

  2. Führen Sie das folgende Skript aus:

    In diesem Skript wird davon ausgegangen, dass der Laufwerkbuchstabe, der dem angefügten Betriebssystemdatenträger zugewiesen ist, F ist. Ersetzen Sie diesen Laufwerkbuchstaben durch den entsprechenden Wert für Ihre VM.

    reg load HKLM\BROKENSYSTEM F:\windows\system32\config\SYSTEM.hiv
    
    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
    

Zurücksetzen der Berechtigung für den Ordner MachineKeys

  1. Öffnen Sie eine Eingabeaufforderungssitzung mit erhöhten Rechten (Als Administrator ausführen).

  2. Führen Sie das folgende Skript aus. In diesem Skript wird davon ausgegangen, dass der Laufwerkbuchstabe, der dem angefügten Betriebssystemdatenträger zugewiesen ist, F ist. Ersetzen Sie diesen Laufwerkbuchstaben durch den entsprechenden Wert für Ihre VM.

    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
    

Aktivieren aller unterstützten TLS-Versionen

  1. Öffnen Sie eine Eingabeaufforderungssitzung mit erhöhten Rechten (Als Administrator ausführen), und führen Sie die folgenden Befehle aus. Im folgenden Skript wird davon ausgegangen, dass der Dem angefügten Betriebssystemdatenträger zugewiesene Treiberbuchstabe F ist. Ersetzen Sie diesen Laufwerkbuchstaben durch den entsprechenden Wert für Ihren virtuellen Computer.

  2. Überprüfen Sie, welcher TLS aktiviert ist:

    reg load HKLM\BROKENSYSTEM F:\windows\system32\config\SYSTEM.hiv
    
    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_DWO
    
  3. Wenn der Schlüssel nicht vorhanden ist oder der Wert 0 ist, aktivieren Sie das Protokoll, indem Sie die folgenden Skripts ausführen:

    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. Aktivieren von NLA:

    REM Enable NLA
    
    REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer /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 ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\Terminal Server\WinStations\RDP-Tcp" /v fAllowSecProtocolNegotiation /t REG_DWORD /d 1 /f  
    
    reg unload HKLM\BROKENSYSTEM
    
  5. Trennen Sie den Betriebssystemdatenträger, und erstellenSie den virtuellen Computer neu, und überprüfen Sie dann, ob das Problem behoben wurde.