Что такое пароль компьютера в AD и зачем он нужен?

«The trust relationship between this workstation and the primary domain failed» — наверное многие админы сталкивались с этой ошибкой, но не все могут объяснить, что же она означает. Сегодня я расскажу о том, что такое пароль компьютера в AD, зачем он нужен, и как исправить эту злосчастную ошибку.

Не секрет, что в доменной среде, все доменные компьютеры так или иначе взаимодействуют с контроллерами домена (далее — КД). Если рассмотреть процесс взаимодействия подробнее, то можно сказать, что каждый компьютер для взаимодействия с КД устанавливает безопасный канал коммуникации (secure channel, далее — schannel). Упрощая, этот канал представляет собой сессию между КД и компьютером. Чтобы эта сессия была безопасной, она шифруется, при помощи ключа, известного только КД и самому компьютеру. В качестве этого ключа выступает пароль учетной записи компьютера в домене (не путать с паролями доменных пользователей).

При попытке обмена данными с КД, КД в первую очередь проверяет, совпадает ли пароль, который предоставляет компьютер для установки schannel, с тем, который хранится в базе Active Directory. Если пароль совпадает — канал устанавливается и происходит дальнейшая коммуникация между компьютером и КД (например логин пользователя). В случае же, если пароли не совпадают, возникает наша злополучная ошибка: «The trust relationship between this workstation and the primary domain failed».

По умолчанию, в целях безопасности пароль учетки компьютера автоматически меняется раз в 30 дней. Смену пароля инициирует компьютер, при условии, что есть связь с КД, так как для дальнейшей успешной установки schannel, пароль должен измениться не только на локальной машине, но и на контроллере. Если связи с КД нет, то смена пароля откладывается до ее появления. Замечу, что такое поведение начинается с Windows Vista, в ранних версиях пароль мог смениться без связи с КД, что приводило к вышеописанной ошибке. Для избежания этой ситуации, был предусмотрен механизм (который сохранился и в текущих версиях Windows), который сохранял старый пароль. Таким образом при попытке логина, если schannel не может быть установлен с новым паролем, машина всегда пытается использовать для его установки сохранный старый пароль, и иногда это помогает избежать появления проблем.

Из всего вышесказанного, также вытекает важный вывод: если вы делаете бэкап Active Directory, то старайтесь делать его не реже 30 дней. Учитывая, что машины помнят прошлый пароль — это максимальный гарантированный срок, при котором все машины смогут войти в домен (со старым или новым паролем) после восстановления. С каждым последующим днем, количество таких машин будет уменьшаться, вплоть до того, что на 61 день, в домен не сможет войти ни одна машина.

Что же делать, если все таки у нас возникла такая ошибка? Как теперь понятно — необходимо изменить пароли учетки компьютера локально и на контроллере домена, чтобы они совпадали. Сделать это можно парой способов:

1. Powershell. Самый простой способ.

Test-ComputerSecureChannel
Reset-ComputerMachinePassword -Credential (Get-Credential) -Server DC

Первый командлет покажет вам статус schannel в настоящий момент времени (true — все ок, false — все плохо), второй командлет сбросит пароли. Обратите внимания, что для этой операции необходимо ввести доменные учетные данные, без них ничего не выйдет. Сервер указывать необязательно, но если не выходит указываете свой КД.

2. Командная строка

nltest /sc_query:domain.name
netdom.exe resetpwd /s:DC /ud:"DOMAIN\user" /pd:"pass"

То же самое, что и первый случай. Тест и смена. Тест покажет «NERR_Success» в случае успеха, если видите слово «ERROR» — что-то идет не так.

  1. еще
    1. dsmod computer «DN» -reset
    2. в пользователях и компьютерах на учетке компа правой кнопкой — «переустановить учетную запись».
    Комп придется переподключать к домену, но SID сохранится.

  2. Учетка и ее sid в домене остаются, так что все будет работать… наверно.
    У nltest тоже есть /sc_reset

    • Вот-вот что наверное 🙂
      Nltest с рабочей станции без рабочего schannel не прокатит, в свое время пробовал. Конечно, если поизвращаться, я думаю можно попробовать и руками вбить как в AD, так и на локальную машину пароль, но я так не пробовал делать. Собственно два метода изложенных выше, чинят все православненько с обоих концов, посему на них и остановился.

Оставить комментарий