При попытке проадминить работающий вне домена Windows Server Core 20H2 в Server Manager вылезла ошибка:
Winrm negotiate authentication error
Это означает, что клиентский сервер (с которого выполняем управление) не смог согласовать параметры сессии WinRM с управляемым сервером. Причин может быть несколько:
- На управляемом сервере отключена аутентификация Negotiate
- Клиент (сервер с которого админим) не доверяет администрируемому серверу.
- Учетные данные, с которыми осуществляется подключение, не валидны.
Диагностика управляемого сервера
Посмотрим параметры WinRM. По дефолту всё должно быть корректно и сервер не включенный в домен должен дать себя проадминить с учеткой локального админа:
winrm get winrm/config/service winrm enumerate winrm/config/listener
В выводе этих двух команд должно быть:
Service ... Auth ... Negotiate = true ... AllowRemoteAccess = true
ну и Listener должен слушать на адресе, котоый доступен клиенту.
Диагностика управляющего сервера
На управляющем сервере важно убедиться, что не введенный в домен сервер прописан в Trusted Hosts:
Get-Item WSMan:\localhost\Client\TrustedHosts | select name,value | format-list
Очень важно, что в списке Trusted Hosts сервер должен быть прописан с DNS-суффиксом. В моем случае DHCP сервер выдавал управляемому серверу суффикс .lan и до тех пор, пока я не прописал сервер в Trusted Hosts с этим суффиксом подключиться не удавалось.
Добавление управляемомго сервера в Trusted Hosts
Это актуально, если серверы не входят в один домен. В пределах домена, как правило, серверы доверяют друг другу.
На управляющем сервере запускаем powershell с правами администратора и добавляем хост в доверенные:
Set-Item wsman:\localhost\Client\TrustedHosts "computer_name" -Concatenate -Force
И теперь прописываем учетные данные для доступа к этому хосту:
cmdkey /add:computer_name /user:Administrator /pass:SUPERPASSWORD
не работает Computer Management
Если в консоли Server Manager хост Online, но Computer Management не работает, то скорее всего виноват Firewall.
Из консоли Server Manager запускаем на удаленном хосте сессию powershell и отключаем Firewall:
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
Удаленный доступ
Разрешим подключение по RDP (хотя там будет доступен только cmd и powershell):
Set-ItemProperty -Path 'HKLM:System\CurrentControlSet\Control\Terminal Server' -name "fDenyTSConnections" -value 0
Ну и дадим разрешение на firewall (если он еще не отклбчен):
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
Discussion