Windows 错误: WinRM 客户端认证失败
没有.
这个错误发生在Windows远程管理 (WinRM) 客户端尝试使用需要完整用户凭证的验证方法建立远程连接时,但系统配置或命令执行未能提供用户名和密码.这经常发生在远程PowerShell会话,自动脚本或服务器管理任务期间.即使您认为您通过了凭证,底层WinRM层拒绝请求,因为它看到一个空的或部分的凭证对象,或者当前的验证策略限制将这些凭证传递给远程目标.
逐步修复问题
修复1:在PowerShell中明确传输凭证
如果您正在运行脚本或命令,请不要依靠您当前登录的会话凭证自动通过没有适当参数.
- 打开 PowerShell 作为一个管理员.
- 通过运行: 存储您的凭证
$cred = Get-Credential - 输入您的目标用户名 (例如,
Domain\Username或是ComputerName\Username) 和密码在提示. - 在明确添加凭证变量时运行远程命令:
Invoke-Command -ComputerName "TARGET_COMPUTER" -ScriptBlock { Get-Process } -Credential $cred
修复2:启用和配置WinRM客户端可靠主机
如果您正在连接到本地 Active Directory 域之外的工作组计算机或服务器,则客户机将拒绝发送凭证,除非目标被明确信任.
- 按下右键 Start 按和选择 Terminal (Admin) 或是 PowerShell (Admin).
- 通过执行: 查看当前可信托主机列表
Get-Item WSMan:\localhost\Client\TrustedHosts - 将您的特定远程计算机添加到值得信赖的列表中:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "TARGET_COMPUTER_IP_OR_NAME" -Force(另一个选择是使用to trust all computers, though this is less secure:设置项 WSMan:\localhost\Client\TrustedHosts -Value " " - 强迫" - 重新启动 WinRM 服务以应用更改:
Restart-Service WinRM
修复3:在WinRM设置中启用基本身份验证
如果您的脚本或应用程序依赖于基本身份验证而不是 Kerberos,则客户端和服务器都必须明确启用基本身份验证.
- 打开 PowerShell (Admin) 在您的本地机器上.
- 检查客户端是否启用基本身份验证:
Get-Item WSMan:\localhost\Client\Auth\Basic - 如果设置为false,则通过运行启用:
Set-Item WSMan:\localhost\Client\Auth\Basic -Value $true - 连接到您的远程服务器并运行相应的命令,以确保服务器允许:
Set-Item WSMan:\localhost\Service\Auth\Basic -Value $true - 重新启动服务:
Restart-Service WinRM
修复4: 在注册表中修改本地帐户TokenFilter策略
当使用本地管理员帐户而不是域管理员帐户连接到远程机器时,Windows用户帐户控制 (UAC) 在远程连接时取消了管理权限.您必须在目标机器上禁用此过.
- 登录 Target Remote Machine.
- 按下 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