Udostępnij za pośrednictwem


Rozwiązywanie problemów z połączeniem RDP maszyny wirtualnej platformy Azure według identyfikatora zdarzenia

Dotyczy: ✔️ maszyny wirtualne z systemem Windows

W tym artykule wyjaśniono, jak używać identyfikatorów zdarzeń do rozwiązywania problemów, które uniemożliwiają połączenie protokołu RDP (Remote Desktop Protocol) z maszyną wirtualną platformy Azure.

Objawy

Spróbujesz użyć sesji protokołu RDP (Remote Desktop Protocol), aby nawiązać połączenie z maszyną wirtualną platformy Azure. Po wprowadzeniu poświadczeń połączenie zakończy się niepowodzeniem i zostanie wyświetlony następujący komunikat o błędzie:

Ten komputer nie może nawiązać połączenia z komputerem zdalnym. Spróbuj ponownie nawiązać połączenie. Jeśli problem będzie nadal występował, skontaktuj się z właścicielem komputera zdalnego lub administratorem sieci.

Aby rozwiązać ten problem, przejrzyj dzienniki zdarzeń na maszynie wirtualnej, a następnie zapoznaj się z poniższymi scenariuszami.

Przed rozpoczęciem rozwiązywania problemów

Tworzenie migawki kopii zapasowej

Aby utworzyć migawkę kopii zapasowej, wykonaj kroki opisane w artykule Migawka dysku.

Zdalne nawiązywanie połączenia z maszyną wirtualną

Aby nawiązać zdalne połączenie z maszyną wirtualną, użyj jednej z metod w temacie Jak używać narzędzi zdalnych do rozwiązywania problemów z maszyną wirtualną platformy Azure.

Scenariusz 1

Dzienniki zdarzeń

W wystąpieniu usługi CMD uruchom następujące polecenia, aby sprawdzić, czy zdarzenie 1058 lub zdarzenie 1057 jest rejestrowane w dzienniku systemu w ciągu ostatnich 24 godzin:

wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name='Microsoft-Windows-TerminalServices-RemoteConnectionManager'] and EventID=1058 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more
wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name='Microsoft-Windows-TerminalServices-RemoteConnectionManager'] and EventID=1057 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more

Nazwa dziennika: System
Źródło: Microsoft-Windows-TerminalServices-RemoteConnectionManager
Data: godzina
Identyfikator zdarzenia: 1058
Kategoria zadania: Brak
Poziom: Błąd
Słowa kluczowe: klasyczne
Użytkownik: Nie dotyczy
Komputer: komputer
Opis: Serwer hosta sesji usług pulpitu zdalnego nie może zastąpić wygasłego certyfikatu z podpisem własnym używanym do uwierzytelniania serwera hosta sesji usług pulpitu zdalnego na połączeniach TLS. Odpowiedni kod stanu to Odmowa dostępu.

Nazwa dziennika: System
Źródło: Microsoft-Windows-TerminalServices-RemoteConnectionManager
Data: godzina
Identyfikator zdarzenia: 1058
Kategoria zadania: Brak
Poziom: Błąd
Słowa kluczowe: klasyczne
Użytkownik: Nie dotyczy
Komputer: komputer
Opis: Serwer hosta sesji usług pulpitu zdalnego nie może utworzyć nowego certyfikatu z podpisem własnym, który ma być używany do uwierzytelniania serwera hosta sesji usług pulpitu zdalnego w połączeniach TLS, odpowiedni kod stanu już istnieje.

Nazwa dziennika: System
Źródło: Microsoft-Windows-TerminalServices-RemoteConnectionManager
Data: godzina
Identyfikator zdarzenia: 1057
Kategoria zadania: Brak
Poziom: Błąd
Słowa kluczowe: klasyczne
Użytkownik: Nie dotyczy
Komputer: komputer
Opis: Serwer hosta sesji usług pulpitu zdalnego nie może utworzyć nowego certyfikatu z podpisem własnym, który ma być używany do uwierzytelniania serwera hosta sesji usług pulpitu zdalnego na połączeniach TLS. Odpowiedni kod stanu to Keyset nie istnieje

Możesz również sprawdzić zdarzenia błędów SCHANNEL 36872 i 36870, uruchamiając następujące polecenia:

wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name='Schannel'] and EventID=36870 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more
wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name='Schannel'] and EventID=36872 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more

Nazwa dziennika: System
Źródło: Schannel
Data:
Identyfikator zdarzenia: 36870
Kategoria zadania: Brak
Poziom: Błąd
Słowa kluczowe:
Użytkownik: SYSTEM
Komputer: komputer
Opis: Wystąpił błąd krytyczny podczas próby uzyskania dostępu do klucza prywatnego poświadczeń serwera TLS. Kod błędu zwrócony z modułu kryptograficznego: 0x8009030D.
Stan błędu wewnętrznego to 10001.

Przyczyna

Ten problem występuje, ponieważ nie można uzyskać dostępu do lokalnych kluczy szyfrowania RSA w folderze MachineKeys na maszynie wirtualnej. Ten problem może wystąpić z jednego z następujących powodów:

  1. Nieprawidłowa konfiguracja uprawnień w folderze Machinekeys lub plikach RSA.

  2. Uszkodzony lub brak klucza RSA.

Rozwiązanie

Aby rozwiązać ten problem, należy skonfigurować odpowiednie uprawnienia do certyfikatu RDP, wykonując następujące kroki.

Udzielanie uprawnień do folderu MachineKeys

  1. Utwórz skrypt przy użyciu następującej zawartości:

    remove-module psreadline 
    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
    
  2. Uruchom ten skrypt, aby zresetować uprawnienia folderu MachineKey i zresetować pliki RSA do wartości domyślnych.

  3. Spróbuj ponownie uzyskać dostęp do maszyny wirtualnej.

Po uruchomieniu skryptu możesz sprawdzić następujące pliki, w których występują problemy z uprawnieniami:

  • c:\temp\BeforeScript_permissions.txt
  • c:\temp\AfterScript_permissions.txt

Odnawianie certyfikatu z podpisem własnym protokołu RDP

Jeśli problem będzie się powtarzać, uruchom następujący skrypt, aby upewnić się, że certyfikat z podpisem własnym protokołu RDP został odnowiony:

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"

Jeśli nie możesz odnowić certyfikatu, wykonaj następujące kroki, aby spróbować usunąć certyfikat:

  1. Na innej maszynie wirtualnej w tej samej sieci wirtualnej otwórz pole Uruchom , wpisz mmc, a następnie naciśnij przycisk OK.

  2. W menu Plik wybierz polecenie Dodaj/Usuń przystawkę.

  3. Na liście Dostępne przystawki wybierz pozycję Certyfikaty, a następnie wybierz pozycję Dodaj.

  4. Wybierz pozycję Konto komputera, a następnie wybierz przycisk Dalej.

  5. Wybierz pozycję Inny komputer, a następnie dodaj adres IP maszyny wirtualnej, która ma problemy.

    Uwaga

    Spróbuj użyć sieci wewnętrznej, aby uniknąć używania wirtualnego adresu IP.

  6. Wybierz pozycję Zakończ, a następnie wybierz pozycję OK.

    Zrzut ekranu przedstawiający opcję Inny komputer w oknie dialogowym Wybieranie komputera.

  7. Rozwiń certyfikaty, przejdź do folderu Pulpit zdalny\Certyfikaty, kliknij prawym przyciskiem myszy certyfikat, a następnie wybierz polecenie Usuń.

  8. Uruchom ponownie usługę konfiguracji pulpitu zdalnego:

    net stop SessionEnv
    net start SessionEnv
    

    Uwaga

    W tym momencie, jeśli odświeżysz magazyn z programu mmc, certyfikat pojawi się ponownie.

Spróbuj ponownie uzyskać dostęp do maszyny wirtualnej przy użyciu protokołu RDP.

Aktualizowanie certyfikatu TLS/SSL

Jeśli skonfigurujesz maszynę wirtualną do używania certyfikatu TLS/SSL, uruchom następujące polecenie, aby uzyskać odcisk palca. Następnie sprawdź, czy jest on taki sam jak odcisk palca certyfikatu:

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SSLCertificateSHA1Hash

Jeśli tak nie jest, zmień odcisk palca:

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SSLCertificateSHA1Hash /t REG_BINARY /d <CERTIFICATE THUMBPRINT>

Możesz również spróbować usunąć klucz, aby protokół RDP używał certyfikatu z podpisem własnym dla protokołu RDP:

reg delete "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SSLCertificateSHA1Hash

Scenariusz 2

Dziennik zdarzeń

W wystąpieniu cmD uruchom następujące polecenia, aby sprawdzić, czy zdarzenie błędu SCHANNEL 36871 jest rejestrowane w dzienniku systemu w ciągu ostatnich 24 godzin:

wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name='Schannel'] and EventID=36871 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more

Nazwa dziennika: System
Źródło: Schannel
Data:
Identyfikator zdarzenia: 36871
Kategoria zadania: Brak
Poziom: Błąd
Słowa kluczowe:
Użytkownik: SYSTEM
Komputer: komputer
Opis: Wystąpił błąd krytyczny podczas tworzenia poświadczeń serwera TLS. Stan błędu wewnętrznego to 10013.

Przyczyna

Ten problem jest spowodowany przez zasady zabezpieczeń. Jeśli starsze wersje protokołu TLS (np. 1.0) są wyłączone, dostęp RDP kończy się niepowodzeniem.

Rozwiązanie

Protokół RDP używa protokołu TLS 1.0 jako protokołu domyślnego. Jednak protokół może zostać zmieniony na TLS 1.1, który jest nowym standardem.

Aby rozwiązać ten problem, zobacz Rozwiązywanie problemów z błędami uwierzytelniania podczas nawiązywania połączenia z maszyną wirtualną platformy Azure przy użyciu protokołu RDP.

Scenariusz 3

Jeśli na maszynie wirtualnej zainstalowano rolę brokera połączeń usług pulpitu zdalnego, sprawdź, czy w ciągu ostatnich 24 godzin wystąpiło zdarzenie 2056 lub zdarzenie 1296. W wystąpieniu usługi CMD uruchom następujące polecenia:

wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name=' Microsoft-Windows-TerminalServices-SessionBroker '] and EventID=2056 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more
wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name=' Microsoft-Windows-TerminalServices-SessionBroker-Client '] and EventID=1296 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more

Nazwa dziennika: Microsoft-Windows-TerminalServices-SessionBroker/Operational
Źródło: Microsoft-Windows-TerminalServices-SessionBroker
Data: godzina
Identyfikator zdarzenia: 2056
Kategoria zadania: (109)
Poziom: Błąd
Słowa kluczowe:
Użytkownik: USŁUGA SIECIOWA
Computer: computer fqdn
Opis: nie można odnaleźć opisu zdarzenia o identyfikatorze 2056 ze źródła Microsoft-Windows-TerminalServices-SessionBroker. Składnik, który zgłasza to zdarzenie, nie jest zainstalowany na komputerze lokalnym lub instalacja jest uszkodzona. Składnik można zainstalować lub naprawić na komputerze lokalnym.
Jeśli zdarzenie pochodzi z innego komputera, informacje o wyświetlaniu musiały zostać zapisane ze zdarzeniem.
Do zdarzenia dołączono następujące informacje:
ZERO
ZERO
Logowanie do bazy danych nie powiodło się.

Nazwa dziennika: Microsoft-Windows-TerminalServices-SessionBroker-Client/Operational
Źródło: Microsoft-Windows-TerminalServices-SessionBroker-Client
Data: godzina
Identyfikator zdarzenia: 1296
Kategoria zadania: (104)
Poziom: Błąd
Słowa kluczowe:
Użytkownik: USŁUGA SIECIOWA
Computer: computer fqdn
Opis: nie można odnaleźć opisu zdarzenia o identyfikatorze 1296 ze źródła Microsoft-Windows-TerminalServices-SessionBroker-Client. Składnik, który zgłasza to zdarzenie, nie jest zainstalowany na komputerze lokalnym lub instalacja jest uszkodzona. Składnik można zainstalować lub naprawić na komputerze lokalnym. Jeśli zdarzenie pochodzi z innego komputera, informacje o wyświetlaniu musiały zostać zapisane ze zdarzeniem. Do zdarzenia dołączono następujące informacje:
text
text
Broker połączeń usług pulpitu zdalnego nie jest gotowy do komunikacji RPC.

Przyczyna

Ten problem występuje, ponieważ nazwa hosta serwera brokera połączeń usług pulpitu zdalnego została zmieniona, co nie jest obsługiwaną zmianą.

Nazwa hosta zawiera wpisy i zależności od wewnętrzna baza danych systemu Windows, które są wymagane przez farmę usług pulpitu zdalnego w celu umożliwienia pracy. Zmiana nazwy hosta po zbudowaniu farmy powoduje wiele błędów i może spowodować, że serwer brokera przestanie działać.

Rozwiązanie

Aby rozwiązać ten problem, należy ponownie zainstalować rolę brokera połączeń usług pulpitu zdalnego i wewnętrzna baza danych systemu Windows.

Następne kroki

Zdarzenia Schannel

Omówienie techniczne dostawcy SSP Schannel

Protokół RDP kończy się niepowodzeniem z identyfikatorem zdarzenia 1058 i zdarzeniem 36870 z certyfikatem hosta sesji usług pulpitu zdalnego i komunikacją SSL

Schannel 36872 lub Schannel 36870 na kontrolerze domeny

Identyfikator zdarzenia 1058 — uwierzytelnianie i szyfrowanie usług pulpitu zdalnego

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pomoc techniczną społeczności platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.