PRTG 센서가 당사 서버 중 하나에서 Windows 업데이트 정보를 수집하지 않는 문제를 해결하고 있습니다. 이를 수행하려면 WinRM과 원격 PowerShell 명령을 사용합니다.
서버 1 - 발행 서버
서버 2 - 작업 서버
Enter-PSSession -ComputerName Server1
연결을 사용 하거나 테스트 하려고 하면 winrs -r:Server1 dir
다음 오류가 계속 발생합니다.
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
다른 서버에서 명령을 실행하면 연결이 성공적으로 이루어지지만 이것이 문제를 일으키는 유일한 서버입니다.
Enter-PSSession
내 사용자 계정으로 스위치 를 사용하여 명령을 실행하면 -Credential
동일한 오류가 발생하지만 명령을 실행하고 서버의 로컬 관리자 계정을 지정하면 연결됩니다. 다른 서버는 잘 작동합니다.
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>
로컬 서버에서 실행하는 경우 스위치를 지정하지 않으면 연결되지 New-PSSession
않는 한 동일한 오류가 발생합니다 . -EnableNetworkAccess
이것은 나를 혼란스럽게 한다. 이벤트 뷰어에서는 사용자 인증과 관련된 이벤트 ID 161과 세션 생성 실패에 대한 오류 142를 제공합니다.
Test-WSMan
로컬 서버와 원격 호스트에서 실행하면 실행 중인 것으로 표시됩니다.
다음은 WinRM 구성과 수신기 구성입니다.
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
내가 시도한 다른 것들:
- WinRM에 대한 GPO 설정이 없습니다.
- 리스너를 삭제하고 다시 만들었습니다.
- WinRM 구성을 여러 번 재설정했습니다.
- 공용, 개인 및 도메인 네트워크에서는 Windows 고급 방화벽이 비활성화됩니다.
- 권한을 확인했는데
Set-PSSessionConfiguration -Name Microsoft.PowerShell -ShowSecurityDescriptorUI
권한이 괜찮은 것 같습니다. - 동일한 결과로 호스트 이름 대신 IP 주소를 사용했습니다.
- 내 컴퓨터를 신뢰할 수 있는 호스트 목록에 추가했는데 작동하지 않습니다. 두 컴퓨터가 모두 동일한 도메인에 있으므로 이는 필요하지 않습니다.
- Ran
Enable-PSRemoting -Force
(Server 2012 이상에서는 WinRM이 기본적으로 활성화되어 있으므로 이는 필요하지 않습니다.) - 운이 좋게도 내 사용자를 서버의 로컬 관리자 및 원격 관리 사용자에 추가했습니다.
- 레지스트리를 조정했는데
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1
값에 관계없이 작동하지 않습니다. - 재부팅하고
sfc /scannow
최후의 노력으로 실행했습니다.
서버, 워크스테이션 및 내 사용자의 사양:
- 내 도메인 계정은 도메인 관리자입니다.
- 서버는 Windows Server 2019 Standard입니다.
- 워크스테이션은 Windows 10 Pro입니다.
- 둘 다에 대한 PowerShell 버전 5.
- 두 컴퓨터 모두 동일한 도메인에 있습니다.
- 두 컴퓨터 모두 최신 상태입니다.
로컬 관리자 계정을 사용하여 이 정보를 폴링하고 위협적인 문제를 해결할 수 있지만 근본적인 문제는 해결되지 않습니다.
원격 서버의 Windows 원격 관리 로그에는 오류 항목이 없지만 내 컴퓨터에는 다음과 같은 오류 항목이 있습니다.
오류 이벤트 ID - 142
WSMan operation Enumeration failed, error code 2150858909
오류 이벤트 ID - 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 - 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.
나는 서버에 RDP를 할 수 있습니다. 이것이 제가 일부 로컬 테스트를 수행한 방법입니다.
다음 두 명령을 테스트했습니다.
gwmi win32_operatingsystem -ComputerName Server1
문제 없이 정상적으로 실행됩니다. 즉, 원격 서버와 RDPing을 로컬에서 실행하도록 지정합니다.
Get-CimInstance win32_operatingsystem -ComputerName Server1
내 워크스테이션에서는 실행할 수 없지만 서버에 RDP를 연결하여 실행하면 정상적으로 실행됩니다.
의 출력은 SetSPN -X
겹치는 SPN을 반환하지 않습니다.
반품 결과 SetSPN -L
:
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
모든 제안에 크게 감사드립니다.
답변1
나는 그것을 해결했다.
SPN 문제였습니다. HTTP/Server1 및 HTTP/Server1.domain은 서버 이름을 딴 임의의 사용자 계정에 의해 사용되었습니다.
계정을 비활성화하고 SPN을 컴퓨터 개체로 이동한 후 WinRM은 이제 예상대로 작동합니다.
이것나를 올바른 방향으로 이끌었습니다.
답변2
spn을 재설정하여 이 문제를 직접 해결했습니다.
setspn -R <hostname>