Итак, в основном у нас есть команда с серверами Linux, работающими с PowerShell Core (смесь 6 и 7), которые должны выполнять удаленные команды Windows PowerShell на серверах Windows. Проблема в том, что команда никогда не заставляла Kerberos работать для аутентификации и полагается на gssapi для работы аутентификации NTLM, которая, насколько я знаю, фактически не поддерживается MS для этого сценария.
Сейчас происходит то, что эти Linux-серверы через некоторое время получают ошибки MI_RESULT_FAILED (это началось только на прошлой неделе, до этого все работало нормально) и требуют перезапуска службы WinRM на удаленном узле для работы удаленного взаимодействия. Это работает примерно сутки, прежде чем WinRM нужно будет снова вернуть.
Теперь, поскольку NTLM не является механизмом аутентификации, поддерживаемым PowerShell Core в Linux (работает только из-за gssntlmssp, который поддерживается RedHat, а не Microsoft), четкий путь вперед здесь будет заключаться в том, чтобы вместо этого использовать OpenSSH для PS Remoting из Linux, или переключиться на использование проверки подлинности Kerberos вместо NTLM. Однако, поскольку до прошлой недели все работало, руководство не хочет проводить аутентификацию или изменение протокола для решения этой проблемы, они хотят, чтобы то, что работало, было исправлено. На данный момент я крутил колеса, пытаясь понять, почему сломалась аутентификация NTLM, и мои рекомендуемые исправления пока не обсуждаются.
На исходных узлах работает RHEL8 или AL2, на удаленных узлах — Windows 2016–2019, а также несколько устаревших версий 2012. Удаленное взаимодействие между Windows и Windows PS нет ломать здесь, только линукс для винды.
Кто-нибудь попадал в эту ситуацию раньше или что-то подобное? Любые идеи о том, что мы могли бы попытаться решить эту проблему?
РЕДАКТИРОВАТЬ: я исправил ошибку выше, чтобы MI_RESULT_FAILED
. ДОСТУП ЗАКРЫТ
это то, что сказала команда, сообщившая о проблеме, но в нашем воспроизведении проблемы мы видим MI_RESULT_FAILED
. Трассировка WinRM показывает, что аутентификация NTLM прошла успешно, но по-прежнему не удается, даже когда просто отображается «Hello World» через Invoke-Command
.