没有.
这个错误发生在尝试通过其循环地址通过Windows远程管理 (WinRM) 连接到本地机器时 ( localhost, 127.0.0.1 或是 [::1] ) 没有明确指定允许循环流量的身份验证机制,或者使用标准Kerberos身份验证时.
By default, the WinRM architecture and Kerberos security protocols prevent loopback authentication to protect against credential reflection attacks. Kerberos relies on Service Principal Names (SPNs) linked to active computer accounts; because localhost 如果没有解决到一个独特的Active Directory机器帐户,Kerberos身份验证失败. 要通过WinRM本地执行命令,您必须配置WinRM客户端允许本地连接或明确使用基本或谈判等替代身份验证方法.
逐步修复问题
方法1:使用计算机名称而不是本地主机
最简单,最安全的解决方案是完全避免循环地址,
- 打开 Command Prompt 或是 PowerShell.
- 通过运行: 找到您的计算机名称
hostname - 使用返回的主机名,而不是
localhost或是127.0.0.1在您的 WinRM 或 PowerShell 移除命令中. 例如:Enter-PSSession -ComputerName YOUR_COMPUTER_NAME
方法2:配置WinRM可靠主机
如果您必须使用 localhost 您需要告诉 WinRM 客户端配置明确信任其连接.
- 右键单击Windows开始菜单并选择 Windows PowerShell (Admin) 或是 Terminal (Admin).
- 运行下面的命令添加
localhost在您的可靠主机列表中:Set-Item WSMan:\localhost\Client\TrustedHosts -Value "localhost" -Force(注:如果您还需要允许IP循环,请使用
-Value "localhost,127.0.0.1,::1") - 重新启动 WinRM 服务以应用更改:
Restart-Service WinRM
方法3:更改身份验证机制
如果您的命令允许参数标志,请明确从 Kerberos 切换到 Negotiate 或 Basic 身份验证,这将正确处理循环流量.
- For PowerShell sessions: 添加一个
-Authentication您的连接命令的参数:Enter-PSSession -ComputerName "localhost" -Authentication Negotiate - For general WinRM utility commands: 使用 指定身份验证类型
-a开关:winrm get winrm/config/client -a:Negotiate
方法4:启用本地帐户令牌过策略
如果您正在作为本地管理员帐户运行命令,并且在执行上述步骤后仍然面临访问阻塞,则Windows用户帐户控制 (UAC) 可能会剥离您在循环连接上的管理权限.
- 按下
Windows Key + R, 类型regedit,然后按下 Enter 打开注册表编辑器. - 导航到以下路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System - 在右边窗口中右键单击一个空白空间,选择 New -> 没有. DWORD (32-bit) Value.
- 命名新值:
LocalAccountTokenFilterPolicy - 双击
LocalAccountTokenFilterPolicy并且改变它. Value data 为了1. - 点击 OK 并重新启动您的计算机来应用注册表更改.
可能有一些错误.. Learn Microsoft