You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

域管理员使用PowerShell远程PSSession连接Windows服务器失败排查

WinRM Kerberos认证故障排查(Windows Server 2019)

问题背景

我正在排查PRTG传感器无法从单台服务器采集Windows Update信息的问题,该传感器基于WinRM和PowerShell远程命令实现采集。

  • 服务器1:故障服务器
  • 服务器2:正常服务器

故障现象

当我尝试使用Enter-PSSession -ComputerName Server1或winrs -r:Server1 dir测试连接时,持续收到如下报错:

PS C:\WINDOWS\system32> winrs -r:Server1 dir

Winrs错误:WinRM无法处理请求,使用Kerberos认证时出现错误码0x80090322,发生未知安全错误。
 可能原因包括:
  - 指定的用户名或密码无效
  - 未指定认证方式和用户名时默认使用Kerberos
  - Kerberos支持域用户名,不支持本地用户名
  - 远程计算机名称和端口对应的服务主体名称(SPN)不存在
  - 客户端和远程计算机属于不同域且无信任关系
 排查上述问题后可尝试以下操作:
  - 检查事件查看器中与认证相关的事件
  - 更换认证方式,将目标计算机添加到WinRM TrustedHosts配置项,或使用HTTPS传输
 请注意TrustedHosts列表中的计算机可能不会经过身份验证。
   如需了解更多WinRM配置信息,可执行命令:winrm help config。

PS C:\WINDOWS\system32> Enter-PSSession -ComputerName Server1
Enter-PSSession : 连接到远程服务器Server1失败,返回如下错误信息:WinRM无法处理请求,使用Kerberos认证时出现错误码0x80090322,发生未知安全错误。
 可能原因包括:
  - 指定的用户名或密码无效
  - 未指定认证方式和用户名时默认使用Kerberos
  - Kerberos支持域用户名,不支持本地用户名
  - 远程计算机名称和端口对应的服务主体名称(SPN)不存在
  - 客户端和远程计算机属于不同域且无信任关系
 排查上述问题后可尝试以下操作:
  - 检查事件查看器中与认证相关的事件
  - 更换认证方式,将目标计算机添加到WinRM TrustedHosts配置项,或使用HTTPS传输
 请注意TrustedHosts列表中的计算机可能不会经过身份验证。
   如需了解更多WinRM配置信息,可执行命令:winrm help config。更多信息请参考about_Remote_Troubleshooting帮助主题。
所在位置 行:1 字符: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 : 连接到远程服务器Server1失败,返回如下错误信息:WinRM无法处理请求,使用Negotiate认证时出现错误码0x80090322,发生未知安全错误。
 可能原因包括:
  - 指定的用户名或密码无效
  - 未指定认证方式和用户名时默认使用Kerberos
  - Kerberos支持域用户名,不支持本地用户名
  - 远程计算机名称和端口对应的服务主体名称(SPN)不存在
  - 客户端和远程计算机属于不同域且无信任关系
 排查上述问题后可尝试以下操作:
  - 检查事件查看器中与认证相关的事件
  - 更换认证方式,将目标计算机添加到WinRM TrustedHosts配置项,或使用HTTPS传输
 请注意TrustedHosts列表中的计算机可能不会经过身份验证。
   如需了解更多WinRM配置信息,可执行命令:winrm help config。更多信息请参考about_Remote_Troubleshooting帮助主题。
所在位置 行:1 字符: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,以及会话创建失败的错误ID 142
  • 在故障服务器本地和远程主机上执行Test-WSMan均返回服务正常运行的结果

WinRM配置信息

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地址替代主机名测试,结果相同
  • 将测试计算机添加到TrustedHosts列表,仍未解决(两台设备属于同一域,本无需该配置)
  • 执行Enable-PSRemoting -Force(Windows 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枚举操作失败,错误码2150858909
  • 错误事件ID - 49
WinRM协议操作失败,错误原因:WinRM无法处理请求,使用Kerberos认证时出现错误码0x80090322,发生未知安全错误。
 可能原因包括:
  - 指定的用户名或密码无效
  - 未指定认证方式和用户名时默认使用Kerberos
  - Kerberos支持域用户名,不支持本地用户名
  - 远程计算机名称和端口对应的服务主体名称(SPN)不存在
  - 客户端和远程计算机属于不同域且无信任关系
 排查上述问题后可尝试以下操作:
  - 检查事件查看器中与认证相关的事件
  - 更换认证方式,将目标计算机添加到WinRM TrustedHosts配置项,或使用HTTPS传输
 请注意TrustedHosts列表中的计算机可能不会经过身份验证。
   如需了解更多WinRM配置信息,可执行命令:winrm help config。
  • 错误事件ID - 161
WinRM无法处理请求,使用Kerberos认证时出现错误码0x80090322,发生未知安全错误。
 可能原因包括:
  - 指定的用户名或密码无效
  - 未指定认证方式和用户名时默认使用Kerberos
  - Kerberos支持域用户名,不支持本地用户名
  - 远程计算机名称和端口对应的服务主体名称(SPN)不存在
  - 客户端和远程计算机属于不同域且无信任关系
 排查上述问题后可尝试以下操作:
  - 检查事件查看器中与认证相关的事件
  - 更换认证方式,将目标计算机添加到WinRM TrustedHosts配置项,或使用HTTPS传输
 请注意TrustedHosts列表中的计算机可能不会经过身份验证。
   如需了解更多WinRM配置信息,可执行命令:winrm help config。

其他测试结果:

  • 可正常通过RDP连接到故障服务器,此前的本地测试均通过RDP登录后执行
  • gwmi win32_operatingsystem -ComputerName Server1可正常执行,无报错(指定远程服务器执行和RDP登录后本地执行均正常)
  • Get-CimInstance win32_operatingsystem -ComputerName Server1无法在工作站上远程执行,但RDP登录到故障服务器后本地执行正常

内容的提问来源于stack exchange,提问作者Logan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 02:30:01