Estoy solucionando un problema que tengo con un sensor PRTG que no recopila información de Windows Update de uno de nuestros servidores. Está utilizando WinRM y un comando remoto de PowerShell para hacerlo.
Servidor 1: servidor de emisión
Servidor 2: servidor de trabajo
Cuando intento usar Enter-PSSession -ComputerName Server1
o winrs -r:Server1 dir
probar la conexión sigo recibiendo los siguientes errores:
PS C:\WINDOWS\system32> winrs -r:Server1 dir
Winrs error:WinRM cannot process the request. The following error with errorcode 0x80090322 occurred while using Kerberos authentication: An unknown security error occurred.
Possible causes are:
-The user name or password specified are invalid.
-Kerberos is used when no authentication method and no user name are specified.
-Kerberos accepts domain user names, but not local user names.
-The Service Principal Name (SPN) for the remote computer name and port does not exist.
-The client and remote computers are in different domains and there is no trust between the two domains.
After checking for the above issues, try the following:
-Check the Event Viewer for events related to authentication.
-Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport.
Note that computers in the TrustedHosts list might not be authenticated.
-For more information about WinRM configuration, run the following command: winrm help config.
PS C:\WINDOWS\system32> Enter-PSSession -ComputerName Server1
Enter-PSSession : Connecting to remote server Server1 failed with the following error message : WinRM cannot process the request. The
following error with errorcode 0x80090322 occurred while using Kerberos authentication: An unknown security error occurred.
Possible causes are:
-The user name or password specified are invalid.
-Kerberos is used when no authentication method and no user name are specified.
-Kerberos accepts domain user names, but not local user names.
-The Service Principal Name (SPN) for the remote computer name and port does not exist.
-The client and remote computers are in different domains and there is no trust between the two domains.
After checking for the above issues, try the following:
-Check the Event Viewer for events related to authentication.
-Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport.
Note that computers in the TrustedHosts list might not be authenticated.
-For more information about WinRM configuration, run the following command: winrm help config. For more information, see the
about_Remote_Troubleshooting Help topic.
At line:1 char:1
+ Enter-PSSession -ComputerName Server1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (Server1:String) [Enter-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId : CreateRemoteRunspaceFailed
Si ejecuto el comando en cualquiera de nuestros otros servidores, la conexión se realiza correctamente; este es el único que me causa problemas.
Si ejecuto el comando Enter-PSSession
con el -Credential
conmutador con mi cuenta de usuario, aparece el mismo error, pero si ejecuto el comando y especifico la cuenta de administrador local del servidor, se conectará. Otros servidores funcionan bien.
PS C:\WINDOWS\system32> Enter-PSSession -ComputerName Server1 -Credential Server1\administrator
[Server1]: PS C:\Users\Administrator\Documents> exit
PS C:\WINDOWS\system32> Enter-PSSession -ComputerName Server1 -credential domain\myuser
Enter-PSSession : Connecting to remote server Server1 failed with the following error message : WinRM cannot process the request. The
following error with errorcode 0x80090322 occurred while using Negotiate authentication: An unknown security error occurred.
Possible causes are:
-The user name or password specified are invalid.
-Kerberos is used when no authentication method and no user name are specified.
-Kerberos accepts domain user names, but not local user names.
-The Service Principal Name (SPN) for the remote computer name and port does not exist.
-The client and remote computers are in different domains and there is no trust between the two domains.
After checking for the above issues, try the following:
-Check the Event Viewer for events related to authentication.
-Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport.
Note that computers in the TrustedHosts list might not be authenticated.
-For more information about WinRM configuration, run the following command: winrm help config. For more information, see the
about_Remote_Troubleshooting Help topic.
At line:1 char:1
+ Enter-PSSession -ComputerName Server1 -credential alpenaw2k.local\kemp ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (Server1:String) [Enter-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId : CreateRemoteRunspaceFailed
PS C:\WINDOWS\system32> Enter-PSSession -ComputerName Server2
[Server2]: PS C:\Users\user\Documents> exit
PS C:\WINDOWS\system32>
Si ejecuto New-PSSession
desde el servidor local obtendré el mismo error, a menos que especifique el -EnableNetworkAccess
conmutador y luego se conectará. Esto me confunde. El visor de eventos me proporciona el ID de evento 161 relacionado con la autenticación del usuario y el error 142 para la sesión que no se pudo crear.
Si ejecuto Test-WSMan
desde el servidor local y un host remoto, muestra que se está ejecutando.
Aquí está la configuración de WinRM y la configuración del oyente:
PS C:\Windows\system32> winrm get winrm/config
Config
MaxEnvelopeSizekb = 500
MaxTimeoutms = 60000
MaxBatchItems = 32000
MaxProviderRequests = 4294967295
Client
NetworkDelayms = 5000
URLPrefix = wsman
AllowUnencrypted = false
Auth
Basic = true
Digest = true
Kerberos = true
Negotiate = true
Certificate = true
CredSSP = false
DefaultPorts
HTTP = 5985
HTTPS = 5986
TrustedHosts = 10.10.10.142
Service
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 = false
Kerberos = true
Negotiate = true
Certificate = false
CredSSP = false
CbtHardeningLevel = Relaxed
DefaultPorts
HTTP = 5985
HTTPS = 5986
IPv4Filter = *
IPv6Filter = *
EnableCompatibilityHttpListener = false
EnableCompatibilityHttpsListener = false
CertificateThumbprint
AllowRemoteAccess = true
Winrs
AllowRemoteShellAccess = true
IdleTimeout = 7200000
MaxConcurrentUsers = 2147483647
MaxShellRunTime = 2147483647
MaxProcessesPerShell = 2147483647
MaxMemoryPerShellMB = 2147483647
MaxShellsPerUser = 2147483647
PS C:\Windows\system32> winrm enumerate winrm/config/listener
Listener
Address = *
Transport = HTTP
Port = 5985
Hostname
Enabled = true
URLPrefix = wsman
CertificateThumbprint
ListeningOn = 10.10.10.87, 127.0.0.1, ::1, fe80::4579:db85:c9cb:ead0%6
Otras cosas que he probado:
- No tengo ninguna configuración de GPO para WinRM.
- Eliminé y volví a crear al oyente.
- Restablecí la configuración de WinRM varias veces.
- El Firewall avanzado de Windows está deshabilitado para redes públicas, privadas y de dominio.
- Revisé los
Set-PSSessionConfiguration -Name Microsoft.PowerShell -ShowSecurityDescriptorUI
permisos y los privilegios parecen estar bien. - He utilizado direcciones IP en lugar de nombres de host con los mismos resultados.
- Agregué mi computadora a la lista de hosts confiables y no funciona. Sin embargo, esto no debería ser necesario ya que ambas computadoras están en el mismo dominio.
- Se ejecutó
Enable-PSRemoting -Force
(aunque esto debería ser innecesario ya que WinRM está habilitado de forma predeterminada para Server 2012 y posteriores). - Agregué mi usuario a los administradores locales y a los usuarios de administración remota en el servidor sin suerte.
- He ajustado el registro de
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1
y esto no funciona independientemente de su valor. - Reinicié y ejecuté
sfc /scannow
un último esfuerzo.
Especificaciones del servidor, estación de trabajo y mi usuario:
- Mi cuenta de dominio es un administrador de dominio.
- El servidor es Windows Server 2019 Standard.
- La estación de trabajo es Windows 10 Pro.
- PowerShell versión 5 para ambos.
- Ambas computadoras están en el mismo dominio.
- Ambas computadoras están actualizadas.
Podría usar la cuenta de administrador local para sondear esta información y solucionar mi problema de intimidación, pero eso no soluciona el problema subyacente.
Desde el servidor remoto no hay entradas de error en el Registro de administración remota de Windows, pero en mi computadora tengo estos:
ID de evento de error: 142
WSMan operation Enumeration failed, error code 2150858909
ID de evento de error: 49
The WinRM protocol operation failed due to the following error: WinRM cannot process the request. The following error with errorcode 0x80090322 occurred while using Kerberos authentication: An unknown security error occurred.
Possible causes are:
-The user name or password specified are invalid.
-Kerberos is used when no authentication method and no user name are specified.
-Kerberos accepts domain user names, but not local user names.
-The Service Principal Name (SPN) for the remote computer name and port does not exist.
-The client and remote computers are in different domains and there is no trust between the two domains.
After checking for the above issues, try the following:
-Check the Event Viewer for events related to authentication.
-Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport.
Note that computers in the TrustedHosts list might not be authenticated.
-For more information about WinRM configuration, run the following command: winrm help config..
ID de evento de error: 161
WinRM cannot process the request. The following error with errorcode 0x80090322 occurred while using Kerberos authentication: An unknown security error occurred.
Possible causes are:
-The user name or password specified are invalid.
-Kerberos is used when no authentication method and no user name are specified.
-Kerberos accepts domain user names, but not local user names.
-The Service Principal Name (SPN) for the remote computer name and port does not exist.
-The client and remote computers are in different domains and there is no trust between the two domains.
After checking for the above issues, try the following:
-Check the Event Viewer for events related to authentication.
-Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport.
Note that computers in the TrustedHosts list might not be authenticated.
-For more information about WinRM configuration, run the following command: winrm help config.
Puedo RDP en el servidor muy bien, así es como he estado haciendo algunas de las pruebas locales.
Probé estos dos comandos:
gwmi win32_operatingsystem -ComputerName Server1
se ejecuta normalmente sin problemas, eso es especificar el servidor remoto y RDPing para ejecutarse localmente.
Get-CimInstance win32_operatingsystem -ComputerName Server1
No puedo ejecutar desde mi estación de trabajo, pero si ingreso RDP al servidor y lo ejecuto, se ejecutará normalmente.
La producción de SetSPN -X
rendimientos no se superpone a los SPN.
La salida de SetSPN -L
rendimientos:
Registered ServicePrincipalNames for CN=Server1,OU=Servers,OU=Organization,DC=Organization,DC=LOCAL:
TERMSRV/Server1.DOMAIN.LOCAL
WSMAN/Server1.DOMAIN.LOCAL
RestrictedKrbHost/Server1.DOMAIN.LOCAL
HOST/Server1.DOMAIN.LOCAL
TERMSRV/Server1
WSMAN/Server1
RestrictedKrbHost/Server1
HOST/Server1
Todas y cada una de las sugerencias son muy apreciadas.
Respuesta1
Lo tengo resuelto.
Fue un problema de SPN. HTTP/Server1 y HTTP/Server1.domain estaban siendo utilizados por una cuenta de usuario aleatoria con el nombre del servidor.
Después de deshabilitar la cuenta y mover los SPN al objeto de la computadora, WinRM ahora funciona como se supone que debe hacerlo.
Esteme llevó en la dirección correcta.
Respuesta2
Solucioné este problema con un reinicio del spn.
setspn -R <hostname>