Вопрос или проблема
Я пытаюсь выполнить следующую команду Powershell:
Enter-PSSession -ComputerName localhost
Сервер работает на Windows Server 2008 R2 SP1 64-разрядной версии. Сервер находится в домене. Я вошел в систему под учетной записью администратора домена. Сессия powershell была запущена от имени администратора.
Я получаю следующее сообщение об ошибке от самого powershell:
PS C:\Users\Daniel> Enter-PSSession -Computername localhost
Enter-PSSession : Не удалось подключиться к удаленному серверу localhost по следующему сообщению об ошибке: Клиент не может
подключиться к назначению, указанному в запросе. Убедитесь, что служба на назначении работает и принимает запросы. Обратитесь к журналам и документации для службы WS-Management, работающей на назначении, чаще всего IIS или WinRM. Если назначение — это служба WinRM, выполните следующую команду на назначении, чтобы
проанализировать и настроить службу WinRM: "winrm quickconfig". Для получения дополнительной информации смотрите раздел
about_Remote_Troubleshooting.
В строке:1 символ:1
+ Enter-PSSession -Computername localhost
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (localhost:String) [Enter-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId : CreateRemoteRunspaceFailed
PS C:\Users\Daniel>
Используя Просмотр событий, мне удалось найти следующие две ошибки в журналах Приложений и служб > Microsoft > Windows > Windows Remote Management > Оперативный
Общее:
Клиент не может подключиться к назначению, указанному в запросе. Убедитесь, что служба на назначении работает и принимает запросы. Обратитесь к журналам и документации для службы WS-Management, работающей на назначении, чаще всего IIS или WinRM. Если назначение — это служба WinRM, выполните следующую команду на назначении, чтобы проанализировать и настроить службу WinRM: "winrm quickconfig".
Детали:
<Событие xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<Система>
<Поставщик Имя="Microsoft-Windows-WinRM" Guid="{A7975C8F-AC13-49F1-87DA-5A984A4AB417}" />
<IDСобытия>161</IDСобытия>
<Версия>0</Версия>
<Уровень>2</Уровень>
<Задача>7</Задача>
<Опкод>0</Опкод>
<Ключевые слова>0x400000000000000a</Ключевые слова>
<ВремяСоздания СистемноеВремя="2016-08-17T23:10:40.766446000Z" />
<IDЗаписиСобытия>56814</IDЗаписиСобытия>
<Корреляция IDДеятельности="{0190DC40-F800-0000-3291-5DB0DAF8D101}" />
<Исполнение IDПроцесса="7888" IDПотока="7912" />
<Канал>Microsoft-Windows-WinRM/Оперативный</Канал>
<Компьютер>FNZAS2.flow.net.nz</Компьютер>
<Безопасность IDПользователя="S-1-5-21-2875926586-1071052228-4104636349-1151" />
</Система>
<ДанныеСобытия>
<Данные Имя="authFailureMessage">Клиент не может подключиться к назначению, указанному в запросе. Убедитесь, что служба на назначении работает и принимает запросы. Обратитесь к журналам и документации для службы WS-Management, работающей на назначении, чаще всего IIS или WinRM. Если назначение — это служба WinRM, выполните следующую команду на назначении, чтобы проанализировать и настроить службу WinRM: "winrm quickconfig".</Данные>
</ДанныеСобытия>
</Событие>
Общее:
Операция WSMan CreateShell завершилась неудачей, код ошибки 2150858770
Детали:
<Событие xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<Система>
<Поставщик Имя="Microsoft-Windows-WinRM" Guid="{A7975C8F-AC13-49F1-87DA-5A984A4AB417}" />
<IDСобытия>142</IDСобытия>
<Версия>0</Версия>
<Уровень>2</Уровень>
<Задача>10</Задача>
<Опкод>2</Опкод>
<Ключевые слова>0x4000000000000002</Ключевые слова>
<ВремяСоздания СистемноеВремя="2016-08-17T23:10:40.766446000Z" />
<IDЗаписиСобытия>56816</IDЗаписиСобытия>
<Корреляция IDДеятельности="{0190DC40-F800-0000-2F91-5DB0DAF8D101}" />
<Исполнение IDПроцесса="7888" IDПотока="7912" />
<Канал>Microsoft-Windows-WinRM/Оперативный</Канал>
<Компьютер>FNZAS2.flow.net.nz</Компьютер>
<Безопасность IDПользователя="S-1-5-21-2875926586-1071052228-4104636349-1151" />
</Система>
<ДанныеСобытия>
<Данные Имя="operationName">CreateShell</Данные>
<Данные Имя="errorCode">2150858770</Данные>
</ДанныеСобытия>
</Событие>
Я пробовал довольно много способов, чтобы проверить все. Вот еще несколько длинных выводов powershell, чтобы показать часть моего рабочего процесса на данный момент.
PS C:\Users\Daniel> $PSVersionTable.PSVersion
Основная Минорная Сборка Ревизия
----- ----- ----- --------
4 0 -1 -1
PS C:\Users\Daniel> winrm quickconfig
Служба WinRM уже запущена на этом компьютере.
WinRM уже настроен для удаленного управления на этом компьютере.
PS C:\Users\Daniel> Enable-PSRemoting
Быстрая конфигурация WinRM
Выполняется команда "Set-WSManQuickConfig", чтобы включить удаленное управление этим компьютером с использованием
службы Windows Remote Management (WinRM).
Это включает в себя:
1. Запуск или перезапуск (если уже запущен) службы WinRM
2. Установка типа запуска службы WinRM в автоматический
3. Создание слушателя для принятия запросов на любом IP-адресе
4. Включение исключений правил брандмауэра Windows для входящих WS-Management трафика (только для http).
Хотите продолжить?
[Y] Да [A] Да для всего [N] Нет [L] Нет для всего [S] Приостановить [?] Помощь (по умолчанию "Y"): A
WinRM уже настроен для получения запросов на этом компьютере.
WinRM уже настроен для удаленного управления на этом компьютере.
Подтвердить
Вы уверены, что хотите выполнить это действие?
Выполнение операции "Set-PSSessionConfiguration" на цели "Имя: microsoft.powershell SDDL:
O:NSG:BAD:P(A;;GA;;;BA)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD). Это позволяет выбранным пользователям удаленно выполнять команды Windows PowerShell на этом компьютере.".
[Y] Да [A] Да для всего [N] Нет [L] Нет для всего [S] Приостановить [?] Помощь (по умолчанию "Y"): A
PS C:\Users\Daniel> Enable-PSRemoting -force
WinRM уже настроен для получения запросов на этом компьютере.
WinRM уже настроен для удаленного управления на этом компьютере.
PS C:\Users\Daniel> winrm get winrm/config
Конфигурация
MaxEnvelopeSizekb = 500
MaxTimeoutms = 60000
MaxBatchItems = 32000
MaxProviderRequests = 4294967295
Клиент
NetworkDelayms = 5000
URLPrefix = wsman
AllowUnencrypted = true [Источник="GPO"]
Auth
Basic = true [Источник="GPO"]
Digest = true
Kerberos = true
Negotiate = true
Certificate = true
CredSSP = true [Источник="GPO"]
DefaultPorts
HTTP = 5985
HTTPS = 5986
TrustedHosts = *
Служба
RootSDDL = O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;IU)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)
MaxConcurrentOperations = 4294967295
MaxConcurrentOperationsPerUser = 1500
EnumerationTimeoutms = 240000
MaxConnections = 300
MaxPacketRetrievalTimeSeconds = 120
AllowUnencrypted = false
Auth
Basic = true [Источник="GPO"]
Kerberos = true
Negotiate = true
Certificate = false
CredSSP = true [Источник="GPO"]
CbtHardeningLevel = Relaxed
DefaultPorts
HTTP = 5985
HTTPS = 5986
IPv4Filter [Источник="GPO"]
IPv6Filter [Источник="GPO"]
EnableCompatibilityHttpListener = false
EnableCompatibilityHttpsListener = false
CertificateThumbprint
AllowRemoteAccess = true [Источник="GPO"]
Winrs
AllowRemoteShellAccess = true [Источник="GPO"]
IdleTimeout = 7200000
MaxConcurrentUsers = 10
MaxShellRunTime = 2147483647
MaxProcessesPerShell = 25
MaxMemoryPerShellMB = 1000
MaxShellsPerUser = 30
PS C:\Users\Daniel> winrm e winrm/config/listener
Слушатель [Источник="GPO"]
Адрес = *
Транспорт = HTTP
Порт = 5985
Имя хоста
Включен = true
URLPrefix = wsman
CertificateThumbprint
ListeningOn = null
PS C:\Users\Daniel> get-service WinRM
Статус Имя Отображаемое имя
------ ---- -----------
Запущен WinRM Удаленное управление Windows (WS-Management)...
PS C:\Users\Daniel> winrm get wmicimv2/Win32_Service?Name=WinRM
Win32_Service
AcceptPause = false
AcceptStop = true
Caption = Удаленное управление Windows (WS-Management)
CheckPoint = 0
CreationClassName = Win32_Service
Description = Служба удаленного управления Windows (WinRM) реализует протокол WS-Management для удаленного управления.
WS-Management — это стандартный протокол веб-сервисов, используемый для удаленного программного и аппаратного управления. Служба WinRM
прослушивает сеть для запросов WS-Management и обрабатывает их. Служба WinRM нуждается в конфигурации слушателя с
помощью инструмента командной строки winrm.cmd или через групповые политики, чтобы иметь возможность прослушивать сеть. Служба WinRM
предоставляет доступ к данным WMI и позволяет собирать события. Сбор и подписка на события требуют, чтобы
служба работала. Сообщения WinRM используют HTTP и HTTPS в качестве транспортных протоколов. Служба WinRM не зависит от IIS, но
предварительно настроена для совместного использования порта с IIS на одной машине. Служба WinRM резервирует префикс URL /wsman. Чтобы предотвратить конфликты с IIS, администраторам следует убедиться, что все веб-сайты, размещенные на IIS, не используют префикс URL /wsman.
DesktopInteract = false
Отображаемое имя = Удаленное управление Windows (WS-Management)
ErrorControl = Нормальный
ExitCode = 0
InstallDate = null
Имя = WinRM
PathName = C:\Windows\System32\svchost.exe -k NetworkService
ProcessId = 936
ServiceSpecificExitCode = 0
ServiceType = Share Process
Started = true
StartMode = Auto
StartName = NT AUTHORITY\NetworkService
State = Running
Status = OK
SystemCreationClassName = Win32_ComputerSystem
SystemName = FNZAS2
TagId = 0
WaitHint = 0
PS C:\Users\Daniel> winrm id
IdentifyResponse
ProtocolVersion = http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
ProductVendor = Microsoft Corporation
ProductVersion = ОС: 6.1.7601 SP: 1.0 Stack: 3.0
SecurityProfiles
SecurityProfileName = http://schemas.dmtf.org/wbem/wsman/1/wsman/secprofile/http/basic, http://schemas.dmtf.org/
wbem/wsman/1/wsman/secprofile/http/spnego-kerberos
PS C:\Users\Daniel> Enter-PSSession -ComputerName localhost
Enter-PSSession : Не удалось подключиться к удаленному серверу localhost по следующему сообщению об ошибке: Клиент не может
подключиться к назначению, указанному в запросе. Убедитесь, что служба на назначении работает и принимает запросы. Обратитесь к журналам и документации для службы WS-Management, работающей на назначении, чаще всего IIS или WinRM. Если назначение — это служба WinRM, выполните следующую команду на назначении, чтобы
проанализировать и настроить службу WinRM: "winrm quickconfig". Для получения дополнительной информации смотрите раздел
about_Remote_Troubleshooting.
В строке:1 символ:1
+ Enter-PSSession -ComputerName localhost
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (localhost:String) [Enter-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId : CreateRemoteRunspaceFailed
PS C:\Users\Daniel>
Я также пробовал перезапустить службу WinRM, а также перезапустить весь сервер. По-прежнему получаю те же ошибки.
Легко пропустить. На мой (неотчетливый) взгляд, второе сообщение об ошибке в Просмотре событий кажется значимым:
Операция WSMan CreateShell завершилась неудачей, код ошибки 2150858770
Я нашел этот код ошибки в другом вопросе на Server Fault, но ответы отсутствуют.
Мне удалось найти аналогичную проблему здесь. Я попробовал MaxFieldLength и MaxRequestBytes, предложенные Arthur_Li, но это не решило проблему для меня.
Этот код ошибки может быть десятичным, поэтому я попытался преобразовать его в шестнадцатеричный и поискать шестнадцатеричный код вместо этого, но не нашел ничего больше, чем основной код ошибки уже обнаружил.
Я совершенно сбит с толку в этот момент. Я настраивал удаленное управление PowerShell на других серверах ранее без таких проблем.
Один совет, который я получил: “Перестаньте использовать 2008 R2. Обновитесь до чего-то более современного.” Мы планировали сделать это в течение следующих шести месяцев в любом случае. Но это не то, что мы сможем реализовать до конца сентября как минимум.
Я могу обойти это, войдя в систему на машинах, загрузив скрипты развертывания и пакет самостоятельно и запустив их вручную. Но это как-то подрывает цель автоматизированного процесса развертывания в первую очередь.
Буду признателен за любую помощь.
ОБНОВЛЕНИЕ #1
Пытаюсь удалить, а затем восстановить слушатель по умолчанию для WinRM.
PS C:\Users\Daniel> winrm delete winrm/config/listener?address=*+transport=HTTP
WSManFault
Сообщение
ПровайдерОшибка
WSManFault
Сообщение = WS-Management не позволяет вносить изменения в слушателя, созданного автоматически групповой политикой.
Политика "Разрешить автоматическую настройку слушателей на службе WinRm" должна быть установлена в "Не настроено", чтобы
создать новый слушатель для того же адреса и транспорта или для изменения уже существующего слушателя.
Номер ошибки: -2144108406 0x8033808A
Невозможно изменить настройку, контролируемую GPO.
Я зашел сюда в gpedit.msc. Оказалось, что “Разрешить автоматическую настройку слушателей на службе WinRm” была бесполезно переименована в “Разрешить удаленное управление сервером через WinRM”. Я установил это в “Не настроено” и попробовал снова.
PS C:\Users\Daniel> winrm delete winrm/config/listener?address=*+transport=HTTP
PS C:\Users\Daniel> winrm create winrm/config/Listener?Address=*+Transport=HTTP
РесурсСоздан
Адрес = http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
ReferenceParameters
ResourceURI = http://schemas.microsoft.com/wbem/wsman/1/config/listener
SelectorSet
Selector: Address = *, Transport = HTTP
PS C:\Users\Daniel> winrm e winrm/config/listener
Слушатель
Адрес = *
Транспорт = HTTP
Порт = 5985
Имя хоста
Включен = true
URLPrefix = wsman
CertificateThumbprint
ListeningOn = 10.10.90.6, 127.0.0.1, ::1, fe80::100:7f:fffe%11, fe80::5efe:10.10.90.6%13
PS C:\Users\Daniel> Enter-PSSession -ComputerName localhost
Enter-PSSession : Не удалось подключиться к удаленному серверу localhost по следующему сообщению об ошибке: WinRM не может обработать
запрос. Произошла следующая ошибка с кодом ошибки 0x80090322 при использовании аутентификации Negotiate: Произошла неизвестная ошибка безопасности.
Возможные причины:
-Указанные имя пользователя или пароль неверны.
-Kerberos используется, когда ни метод аутентификации, ни имя пользователя не указаны.
-Kerberos принимает доменные имена пользователей, но не локальные имена пользователей.
-Имя сервисного принципала (SPN) для удаленного имени компьютера и порта не существует.
-Клиент и удаленные компьютеры находятся в разных доменах, и между двумя доменами нет доверия.
После проверки приведенных выше вопросов попробуйте следующее:
-Проверьте Просмотр событий на наличие событий, связанных с аутентификацией.
-Измените метод аутентификации; добавьте целевой компьютер в настройку доверенных хостов WinRM или используйте HTTPS-транспорт.
Обратите внимание, что компьютеры в списке доверенных хостов могут не проходить аутентификацию.
-Для получения дополнительной информации о конфигурации WinRM выполните следующую команду: winrm help config. Для получения дополнительной информации смотрите раздел
about_Remote_Troubleshooting.
В строке:1 символ:1
+ Enter-PSSession -ComputerName localhost
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (localhost:String) [Enter-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId : CreateRemoteRunspaceFailed
PS C:\Users\Daniel>
На эту тему вот текущая конфигурация моей GPO для WinRM
Локальная политика компьютера > Конфигурация компьютера > Шаблоны административного управления > Компоненты Windows > Удаленное управление Windows (WinRM) > Клиент WinRM
- Разрешить базовую аутентификацию: Включено
- Разрешить аутентификацию CredSSP: Включено
- Разрешить нешифрованный трафик: Включено
- Запретить аутентификацию Digest: Не настроено
- Запретить аутентификацию Kerberos: Не настроено
- Запретить аутентификацию Negotiate: Не настроено
- Доверенные хосты: Не настроено
Локальная политика компьютера > Конфигурация компьютера > Шаблоны административного управления > Компоненты Windows > Удаленное управление Windows (WinRM) > Сервер WinRM
- Разрешить удаленное управление сервером через WinRM: Не настроено (Заметьте: Это было установлено на ‘Включено’ в примерах до этого обновления)
- Разрешить базовую аутентификацию: Включено
- Разрешить аутентификацию CredSSP: Включено
- Разрешить нешифрованный трафик: Включено
- Указать уровень жесткости жёсткой привязки канала: Не настроено
- Запретить WinRM на сохранение учетных данных RunAs: Не настроено
- Запретить аутентификацию Kerberos: Не настроено
- Запретить аутентификацию Negotiate: Не настроено
- Включить совместимость HTTP-слушателя: Не настроено
- Включить совместимость HTTPS-слушателя: Не настроено
Сообщение об ошибке изменилось. Когда я заглядываю в Просмотр событий, я теперь получаю следующие две ошибки. Обратите внимание, что обе они изменились. Первая изменилась драматически, вторая менее драматически.
Общее:
Опущено для краткости. То же самое, что и в "authFailureMessage" в деталях ниже.
Детали:
<Событие xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<Система>
<Поставщик Имя="Microsoft-Windows-WinRM" Guid="{A7975C8F-AC13-49F1-87DA-5A984A4AB417}" />
<IDСобытия>161</IDСобытия>
<Версия>0</Версия>
<Уровень>2</Уровень>
<Задача>7</Задача>
<Опкод>0</Опкод>
<Ключевые слова>0x400000000000000a</Ключевые слова>
<ВремяСоздания СистемноеВремя="2016-08-18T00:37:41.784323600Z" />
<IDЗаписиСобытия>61452</IDЗаписиСобытия>
<Корреляция IDДеятельности="{0190DC40-F800-0000-79D1-5DB0DAF8D101}" />
<Исполнение IDПроцесса="7888" IDПотока="8116" />
<Канал>Microsoft-Windows-WinRM/Оперативный</Канал>
<Компьютер>FNZAS2.flow.net.nz</Компьютер>
<Безопасность IDПользователя="S-1-5-21-2875926586-1071052228-4104636349-1151" />
</Система>
<ДанныеСобытия>
<Данные Имя="authFailureMessage">WinRM не может обработать запрос. Произошла следующая ошибка с кодом ошибки 0x80090322 при использовании аутентификации Negotiate: Произошла неизвестная ошибка безопасности. Возможные причины:
-Указанные имя пользователя или пароль неверны. -Kerberos используется, когда ни метод аутентификации, ни имя пользователя не указаны. -Kerberos принимает доменные имена пользователей, но не локальные имена пользователей. -Имя сервисного принципала (SPN) для удаленного имени компьютера и порта не существует. -Клиент и удаленные компьютеры находятся в разных доменах, и между двумя доменами нет доверия. После проверки приведенных выше вопросов попробуйте следующее: -Проверьте Просмотр событий на наличие событий, связанных с аутентификацией. -Измените метод аутентификации; добавьте целевой компьютер в настройку доверенных хостов WinRM или используйте HTTPS-транспорт. Обратите внимание, что компьютеры в списке доверенных хостов могут не проходить аутентификацию. -Для получения дополнительной информации о конфигурации WinRM выполните следующую команду: winrm help config.</Данные>
</ДанныеСобытия>
</Событие>
Общее:
Операция WSMan CreateShell завершилась неудачей, код ошибки 2150858909
Детали:
<Событие xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<Система>
<Поставщик Имя="Microsoft-Windows-WinRM" Guid="{A7975C8F-AC13-49F1-87DA-5A984A4AB417}" />
<IDСобытия>142</IDСобытия>
<Версия>0</Версия>
<Уровень>2</Уровень>
<Задача>10</Задача>
<Опкод>2</Опкод>
<Ключевые слова>0x4000000000000002</Ключевые слова>
<ВремяСоздания СистемноеВремя="2016-08-18T00:37:41.784323600Z" />
<IDЗаписиСобытия>61454</IDЗаписиСобытия>
<Корреляция IDДеятельности="{0190DC40-F800-0000-7CD1-5DB0DAF8D101}" />
<Исполнение IDПроцесса="7888" IDПотока="8116" />
<Канал>Microsoft-Windows-WinRM/Оперативный</Канал>
<Компьютер>FNZAS2.flow.net.nz</Компьютер>
<Безопасность IDПользователя="S-1-5-21-2875926586-1071052228-4104636349-1151" />
</Система>
<ДанныеСобытия>
<Данные Имя="operationName">CreateShell</Данные>
<Данные Имя="errorCode">2150858909</Данные>
</ДанныеСобытия>
</Событие>
ОБНОВЛЕНИЕ #2
Пытаюсь очистить настройки WinRM и затем восстановить значения по умолчанию.
Вывод PowerShell на: pastebin.com/E5wgXE1q
Журналы событий Windows остаются такими же, как и в обновлении #1.
ОБНОВЛЕНИЕ #3
Используя вывод winrm/config Мера в качестве руководства, я прошел через объекты групповой политики моего локального компьютера и сбросил все назад на “Не настроено”. Это дает мне вывод winrm/config, который совпадает с выводом Мера.
Тем не менее, мне все еще не удалось подключиться. Я снова выполнил те же шаги очистки/сброса, следуя обновлению #2, чтобы быть в безопасности, и это тоже не сработало.
Вывод PowerShell на pastebin.com/EuzyDR6d
Вывод в журнале событий такой же, как для обновления 2.
Попробую перезагрузить сервер, чтобы увидеть, будет ли это иметь значение.
ОБНОВЛЕНИЕ #4
Перезагрузка сервера не помогла. Все еще получаю то же сообщение об ошибке, что и в обновлении #2.
ОБНОВЛЕНИЕ #5
Окей. Это безумие.
Все проблемы выше происходят на сервере, который мы назовем AS2.
Я только что перешел на сервер AS1 и настроил удаленный PowerShell. Просто чтобы убедиться, что я не схожу с ума.
- AS1: Enter-PSSession localhost > Успешно
- AS1: Enter-PSSession AS2 > Успешно
- AS2: Enter-PSSession localhost > Ошибка
- AS2: Enter-PSSession AS1 > Успешно
Ранее у меня были проблемы с подключением с AS2 к любому серверу. Но где-то по пути я это исправил. Теперь это только localhost на AS2 является проблемой.
Это кажется совершенно безумным. Почему AS2 не может подключиться к себе, когда он явно готов принимать входящие соединения, и он может делать исходящие соединения нормально?
ОБНОВЛЕНИЕ #6
Хорошо, новая информация: аутентификация CredSSP работает. Похоже, что есть что-то, что связано с аутентификацией Negotiate на этом сервере, что не работает.
Я возможно смогу использовать это в качестве основы для обходного решения для того, что я пытаюсь сделать. Однако это все равно не объясняет, почему аутентификация Negotiate кажется неработоспособной на этом сервере.
Можете удалить существующий слушатель с помощью:
winrm delete winrm/config/listener?address=*+transport=HTTP
И добавить новый с:
winrm create winrm/config/Listener?Address=*+Transport=HTTP
И проверьте снова с:
winrm e winrm/config/listener
ListeningOn
должен перечислять ваши IP-адреса, а не null.
Ответ или решение
Проблема с использованием команды Enter-PSSession на localhost
Ваша проблема с подключением к локальному компьютеру через Enter-PSSession -ComputerName localhost
на сервере Windows Server 2008 R2 может возникнуть из-за нескольких факторов, касающихся настройки WinRM (Windows Remote Management) и аутентификации. Давайте рассмотрим шаги диагностики и возможные решения.
1. Проверка конфигурации WinRM
Согласно вашему описанию, вы уже выполнили команду winrm quickconfig
, которая подтвердила, что WinRM настроен правильно. Однако стоит ещё раз проверить следующие параметры:
-
Убедитесь, что служба WinRM запущена:
Get-Service WinRM
-
Проверьте текущую конфигурацию WinRM:
winrm get winrm/config
-
Убедитесь, что существует слушатель для WinRM:
winrm e winrm/config/listener
Если слушатель не настроен или активирован не на всех сетевых интерфейсах, выполните:
winrm delete winrm/config/listener?address=*+transport=HTTP
winrm create winrm/config/Listener?Address=*+Transport=HTTP
2. Аутентификация
Как вы отметили в обновлениях, аутентификация Kerberos может создавать проблемы. Если WinRM не может правильно обработать запрос аутентификации Negotiate, попробуйте временно отключить Negotiate и использовать другие методы аутентификации, такие как CredSSP или Basic.
Для изменения методов аутентификации используйте команду:
winrm set winrm/config/service/auth '@{Negotiate="false";Basic="true";CredSSP="true"}'
3. Проверка параметров локальной политики безопасности и Групповых политик
Настройки групповых политик могут влиять на WinRM. Убедитесь, что:
- Политика "Allow remote server management through WinRM" установлена на "Не настроено".
- Аутентификация, разрешенная в политике WinRM, соответствует вашим требованиям.
Откройте редактор локальной политики:
- Запустите
gpedit.msc
. - Перейдите в "Конфигурация компьютера" > "Административные шаблоны" > "Компоненты Windows" > "Windows Remote Management (WinRM)" и проверьте соответствующие настройки.
4. Устранение неполадок
Если проблема по-прежнему сохраняется, выполните следующее:
-
Очистите конфигурацию WinRM и восстановите настройки по умолчанию. Это можно сделать, используя:
winrm invoke RestoreConfig winrm quickconfig
-
Проверьте журналы событий на наличие ошибок, связанных с аутентификацией:
- Журнал событий Windows -> Применение и службы -> Microsoft -> Windows -> Windows Remote Management -> Операционный.
Вы также можете использовать команду:
Get-WinEvent -LogName "Microsoft-Windows-WinRM/Operational" | Where-Object { $_.Id -eq 161 -or $_.Id -eq 142 }
5. Проверка безопасности и сети
Проверьте, нет ли ограничений для WinRM на уровне брандмауэра:
- Порты 5985 (HTTP) и 5986 (HTTPS) должны быть открыты в брандмауэре.
- Убедитесь, что ваш DNS и SPN настраиваются верно.
Заключение
Если после всех указанных шагов проблема не устраняется, возможно, имеет смысл быть в курсе обновлений для Windows Server или рассмотреть возможность обновления до более поздней версии Windows Server, учитывая, что Windows Server 2008 R2 больше не поддерживается.
Если вас интересует поддержка или дополнительные вопросы, не стесняйтесь обращаться за помощью.