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:
Nieprawidłowa konfiguracja uprawnień w folderze Machinekeys lub plikach RSA.
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
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
Uruchom ten skrypt, aby zresetować uprawnienia folderu MachineKey i zresetować pliki RSA do wartości domyślnych.
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:
Na innej maszynie wirtualnej w tej samej sieci wirtualnej otwórz pole Uruchom , wpisz mmc, a następnie naciśnij przycisk OK.
W menu Plik wybierz polecenie Dodaj/Usuń przystawkę.
Na liście Dostępne przystawki wybierz pozycję Certyfikaty, a następnie wybierz pozycję Dodaj.
Wybierz pozycję Konto komputera, a następnie wybierz przycisk Dalej.
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.
Wybierz pozycję Zakończ, a następnie wybierz pozycję OK.
Rozwiń certyfikaty, przejdź do folderu Pulpit zdalny\Certyfikaty, kliknij prawym przyciskiem myszy certyfikat, a następnie wybierz polecenie Usuń.
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
Omówienie techniczne dostawcy SSP Schannel
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.