Powershell 원격 PSSession 실패 - 도메인 관리자 계정 - 오류 0x80090322

Powershell 원격 PSSession 실패 - 도메인 관리자 계정 - 오류 0x80090322

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>

관련 정보