Устранение неполадок с RDP-подключением к виртуальной машине по идентификатору события
Область применения: ✔️ Виртуальные машины Windows
В этой статье объясняется, как использовать идентификаторы событий для устранения проблем, которые препятствуют подключению к виртуальной машине Azure по протоколу удаленного рабочего стола.
Симптомы
Вы пытаетесь использовать сеанс протокола удаленного рабочего стола (RDP) для подключения к виртуальной машине Azure. После того как вы вводите учетные данные, соединение завершается сбоем и появляется следующее сообщение об ошибке:
Не удается подключиться к удаленному компьютеру. Try connecting again, if the problem continues, contact the owner of the remote computer or your network administrator (Не удается подключиться к удаленному компьютеру. Попробуйте подключиться снова. Если проблема не исчезнет, обратитесь к владельцу удаленного компьютера или к администратору сети).
Чтобы устранить эту проблему, просмотрите журналы событий на виртуальной машине, а затем обратитесь к следующим сценариям.
Перед устранением неполадок
Создание моментального снимка резервной копии
Чтобы создать моментальный снимок резервной копии, выполните действия, описанные в статье Создание моментального снимка.
Удаленный вход на виртуальную машину
Чтобы удаленно подключиться к виртуальной машине, используйте один из методов, описанных в статье Use remote tools to troubleshoot Azure VM issues (Использование удаленных средств для устранения проблем с виртуальными машинами Azure).
Сценарий 1
Журналы событий
В экземпляре CMD запустите следующие команды, чтобы проверить, зарегистрировано ли событие 1058 или 1057 в журнале системы в течение последних 24 часов:
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
Имя журнала: система
Источник: Microsoft-Windows-TerminalServices-RemoteConnectionManager
Дата: время
Идентификатор события: 1058
Категория задач: Нет
Уровень: ошибка
Ключевые слова: классическая модель
Пользователь: N/A
Компьютер: компьютер
Описание. Не удалось заменить истекший срок действия самозаверяющий сертификат, используемый для проверки подлинности сервера узла сеансов удаленных рабочих стола при подключении TLS. Соответствующий код состояния: "Отказ в доступе".
Имя журнала: система
Источник: Microsoft-Windows-TerminalServices-RemoteConnectionManager
Дата: время
Идентификатор события: 1058
Категория задач: Нет
Уровень: ошибка
Ключевые слова: классическая модель
Пользователь: N/A
Компьютер: компьютер
Описание. Сервер узла сеанса удаленных рабочих стола не удалось создать самозаверяющий сертификат, используемый для проверки подлинности сервера узла сеанса удаленных рабочих стола в подключениях TLS, соответствующий код состояния уже существует.
Имя журнала: система
Источник: Microsoft-Windows-TerminalServices-RemoteConnectionManager
Дата: время
Идентификатор события: 1057
Категория задач: Нет
Уровень: ошибка
Ключевые слова: классическая модель
Пользователь: N/A
Компьютер: компьютер
Описание. Не удалось создать самозаверяющий сертификат сервера сеансов удаленных рабочих стола для проверки подлинности сервера узла сеансов удаленных рабочих стола в подключениях TLS. Соответствующий код состояния: "Набор ключей не существует".
Вы также можете проверить события ошибок SCHANNEL 36872 и 36870, выполнив следующие команды:
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
Имя журнала: система
Источник: Schannel
Дата: —
Идентификатор события: 36870
Категория задач: Нет
Уровень: ошибка
Ключевые слова:
Пользователь: SYSTEM
Компьютер: компьютер
Описание. При попытке доступа к закрытому ключу сервера TLS произошла неустранимая ошибка. Код ошибки, возвращаемый из криптографического модуля, — 0x8009030D.
Внутреннее состояние ошибки: 10001.
Причина
Эта проблема возникает из-за того, что доступ к локальным ключам шифрования RSA в папке MachineKeys на виртуальной машине невозможен. Эта проблема может возникать по любой из следующих причин:
Неверная настройка разрешений в папке Machinekeys или в файлах RSA.
Ключ RSA отсутствует или поврежден.
Решение
Чтобы устранить эту проблему, необходимо настроить правильные разрешения для RDP-сертификата, используя следующие шаги.
Предоставление разрешений папке MachineKeys
Создайте сценарий, используя следующее содержимое:
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
Запустите этот сценарий, чтобы сбросить разрешения папки MachineKey и сбросить файлы RSA до значений по умолчанию.
Попробуйте снова обратиться к виртуальной машине.
После выполнения сценария вы можете проверить следующие файлы, в которых наблюдаются проблемы с разрешениями:
- c:\temp\BeforeScript_permissions.txt
- c:\temp\AfterScript_permissions.txt
Обновление самозаверяющего сертификата RDP
Если проблема не устранена, запустите следующий сценарий, чтобы убедиться, что самозаверяющий сертификат RDP обновлен:
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"
Если вы не можете обновить сертификат, выполните следующие действия, чтобы попытаться удалить его:
На другой виртуальной машине в той же виртуальной сети откройте поле Запуск, введите mmc, а затем нажмите кнопку ОК.
В меню Файл выберите Добавить или удалить оснастку.
В списке Доступные оснастки выберите Сертификаты, а затем нажмите кнопку Добавить.
Выберите учетную запись компьютера и нажмите кнопку Далее.
Выберите Another computer (Другой компьютер), а затем добавьте IP-адрес виртуальной машины, с которой возникли проблемы.
Примечание.
Используйте внутреннюю сеть, чтобы избежать использования виртуального IP-адреса.
Выберите Готово, затем выберите ОК.
Разверните сертификаты, перейдите в папку Remote Desktop\Certificates, щелкните правой кнопкой мыши сертификат и выберите Удалить.
Перезапустите службу настройки удаленного рабочего стола:
net stop SessionEnv net start SessionEnv
Примечание.
Если сейчас вы обновите хранилище с помощью команды mmc, сертификат снова появится.
Попробуйте обратиться к виртуальной машине с помощью RDP.
Обновление TLS/SSL-сертификата
Если вы настроили виртуальную машину для использования TLS/SSL-сертификата, выполните следующую команду, чтобы получить отпечаток. Затем проверьте, совпадает ли он с отпечатком сертификата:
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SSLCertificateSHA1Hash
Если это не так, измените отпечаток:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SSLCertificateSHA1Hash /t REG_BINARY /d <CERTIFICATE THUMBPRINT>
Вы также можете попытаться удалить ключ, чтобы для RDP использовался самозаверяющий сертификат:
reg delete "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SSLCertificateSHA1Hash
Сценарий 2
Журнал событий
В экземпляре CMD запустите следующие команды, чтобы проверить, зарегистрировано ли событие ошибки SCHANNEL 36871 в системном журнале за последние 24 часа:
wevtutil qe system /c:1 /f:text /q:"Event[System[Provider[@Name='Schannel'] and EventID=36871 and TimeCreated[timediff(@SystemTime) <= 86400000]]]" | more
Имя журнала: система
Источник: Schannel
Дата: —
Идентификатор события: 36871
Категория задач: Нет
Уровень: ошибка
Ключевые слова:
Пользователь: SYSTEM
Компьютер: компьютер
Описание: произошла неустранимая ошибка при создании учетных данных сервера TLS. Внутреннее состояние ошибки: 10013.
Причина
Эта проблема вызвана политиками безопасности. Когда более старые версии TLS (например, 1.0) отключены, RDP-доступ завершается ошибкой.
Решение
RDP использует TLS 1.0 в качестве протокола по умолчанию. Однако протокол может быть изменен на TLS 1.1, который является новым стандартом.
Чтобы устранить эту проблему, обратитесь к статье Устранение ошибок аутентификации при подключении к виртуальной машине Azure по протоколу RDP.
Сценарий 3
Если на виртуальной машине установлена роль посредника подключений к удаленному рабочему столу, проверьте, зарегистрировано ли событие 2056 или 1296 в течение последних 24 часов. В экземпляре CMD выполните следующие команды:
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
Имя журнала: Microsoft-Windows-TerminalServices-SessionBroker/Operational
Источник: Microsoft-Windows-TerminalServices-SessionBroker
Дата: время
Идентификатор события: 2056
Категория задач: (109)
Уровень: ошибка
Ключевые слова:
Пользователь: NETWORK SERVICE
Компьютер: полное доменное имя компьютера
Описание: не удается найти описание для события с кодом 2056 из источника Microsoft-Windows-TerminalServices-SessionBroker. Компонент, вызывающий это событие, не установлен на локальном компьютере или установка повреждена. Вы можете установить или исправить компонент на локальном компьютере.
Если событие возникло на другом компьютере, отображаемые сведения должны быть сохранены вместе с событием.
Следующие сведения были включены в событие:
НЕДЕЙСТВИТЕЛЬНЫЙ
НЕДЕЙСТВИТЕЛЬНЫЙ
Не удалось выполнить вход в базу данных.
Имя журнала: Microsoft-Windows-TerminalServices-SessionBroker-Client/Operational
Источник: Microsoft-Windows-TerminalServices-SessionBroker-Client
Дата: время
Идентификатор события: 1296
Категория задач: (104)
Уровень: ошибка
Ключевые слова:
Пользователь: NETWORK SERVICE
Компьютер: полное доменное имя компьютера
Описание: не удается найти описание для события с кодом 1296 из источника Microsoft-Windows-TerminalServices-SessionBroker-Client. Компонент, вызывающий это событие, не установлен на локальном компьютере или установка повреждена. Вы можете установить или исправить компонент на локальном компьютере.
Если событие возникло на другом компьютере, отображаемые сведения должны быть сохранены вместе с событием.
Следующие сведения были включены в событие:
text
text
Посредник подключений к удаленному рабочему столу не готов для связи по RPC.
Причина
Эта проблема возникает из-за изменения имени узла сервера посредника подключений к удаленному рабочему столу. Это неподдерживаемое изменение.
Имя узла имеет записи во внутренней базе данных Windows, которая необходима ферме службы удаленных рабочих столов для работы, и зависимости от нее. Изменение имени узла после того, как ферма уже создана, вызывает множество ошибок и может привести к остановке работы сервера-посредника.
Решение
Чтобы устранить эту проблему, необходимо переустановить роль посредника подключений к удаленному рабочему столу и внутреннюю базу данных Windows.
Next Steps
Технический обзор Schannel SSP
Описание сбоя Schannel с кодом 36872 или 36870 на контроллере домена
Описание события с кодом 1058 — аутентификация и шифрование служб удаленных рабочих столов
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.