4

我不确定我是否使用 winrmcmd 正确配置了 TrustedHosts

我正在从 host_computer(工作组的一部分)在 PowerShell 中运行命令

$cred = Get-Credential -credential user

出现提示,我输入密码

在此处输入图像描述

然后我执行一个命令,以便 setup.exe 将在 remote_computer (也是工作组的一部分)上执行

invoke-command -ComputerName remote_computer -credential $cred -scriptBlock {& 'C:\share\setup.exe'}

出现错误:

[remote_computer] Connecting to remote server remote_computer failed with the following error message : The WinRM client cannot process the request. If the authentication scheme is different from Kerberos, or if the client 
computer is not joined to a domain, then HTTPS transport must be used or the destination machine must be added to the TrustedHosts configuration setting. Use winrm.cmd to configure TrustedHosts. Note that computers in the 
TrustedHosts list might not be authenticated. You can get more information about that by running the following command: winrm help config. For more information, see the about_Remote_Troubleshooting Help topic.
    + CategoryInfo          : OpenError: (remote_computer:String) [], PSRemotingTransportException
    + FullyQualifiedErrorId : ServerNotTrusted,PSSessionStateBroken

我按照http://pubs.vmware.com/orchestrator-plugins/index.jsp#com.vmware.using.powershell.plugin.doc_10/GUID-D4ACA4EF-D018-448A-866A-DECDDA5CC3C1.html的步骤进行操作

在 host_computer 我打开命令提示符(shift,右键单击,选择“以管理员身份运行”)并执行以下命令

C:\Windows\system32>winrm quickconfig

C:\Windows\system32>winrm e winrm/config/listener

C:\Windows\system32>winrm get winrm/config

C:\Windows\system32>winrm set winrm/config/service/auth @{Basic="true"}

C:\Windows\system32>winrm set winrm/config/service @{AllowUnencrypted="true"}

C:\Windows\system32>winrm set winrm/config/client @{TrustedHosts="remote_computer"}

在 remote_computer 我打开命令提示符(shift,右键单击,选择“以管理员身份运行”)并执行以下命令

C:\Windows\system32>winrm get winrm/config

C:\Windows\system32>winrm set winrm/config/client/auth @{Basic="true"}

C:\Windows\system32>winrm set winrm/config/client @{AllowUnencrypted="true"}

C:\Windows\system32>winrm set winrm/config/client @{TrustedHosts="host_computer"}

C:\Windows\system32>winrm identify -r:http://host_computer:5985 -auth:basic -u:user -p:password -encoding:utf-8

我得到以下回应

IdentifyResponse
    ProtocolVersion = http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
    ProductVendor = Microsoft Corporation
    ProductVersion = OS: 6.3.9600 SP: 0.0 Stack: 3.0
    SecurityProfiles
        SecurityProfileName = http://schemas.dmtf.org/wbem/wsman/1/wsman/secprof
ile/http/basic, http://schemas.dmtf.org/wbem/wsman/1/wsman/secprofile/http/spneg
o-kerberos

现在当我去 host_computer 并执行

invoke-command -ComputerName remote_computer -credential $cred -scriptBlock {& 'C:\share\setup.exe'}

我不再收到任何错误消息,但是当我远程进入 remote_host 时,我在任务管理器中看不到 setup.exe。已经半个多小时了,我找不到文件被执行的任何证据。

如何排除故障?

4

3 回答 3

0

使用 wmirm.cmd 添加 TrustedHosts(参见 OP)后,以下命令有效

invoke-command -ComputerName remote_Computer -credential $cred -scriptBlock {cmd /c 'C:\share\setup.exe'}
于 2014-08-28T12:40:42.327 回答
0

除了禁用 machineA 和 machineB 上的防火墙,并winrm set winrm/config/client @{TrustedHosts="machineB"}在机器 A 上执行之外,我还可以调用Invoke-Command -FilePath c:\scripts\test.ps1 -ComputerName machineB

此链接也很有帮助 http://pubs.vmware.com/orchestrator-plugins/index.jsp?topic=%2Fcom.vmware.using.powershell.plugin.doc_10%2FGUID-D4ACA4EF-D018-448A-866A-DECDDA5CC3C1。 html

于 2017-06-18T03:57:27.000 回答
0

我知道这是一个老问题,但它可能会帮助那些没有找到任何答案的人。因此,WinRM 类似于基于 SOAP Web 的 Web API,当您想在非 AD 环境中使用此 API 时,您可能会面临不同的安全相关问题。您应该注意的第一件事是,您不仅要配置服务器端,还要配置客户端!

例如,如果您将远程计算机配置为不使用 HTTPS,并将管理员计算机添加到受信任的主机,您还必须在管理员计算机上执行(从该计算机启动会话):

Set-Item wsman:\localhost\client\trustedhosts <target machine> 

将目标(目标)机器添加到受信任列表中。

您可以很容易地看到,如果错误类似于以下内容:“WinRM 客户端无法处理请求。如果身份验证方案与 Kerberos 不同,或者客户端计算机未加入域,则必须使用 HTTPS 传输或目标计算机必须添加到 TrustedHosts 中“它会告诉您客户端问题(“WinRM 客户端无法处理”)。此外,在这种情况下,您将看不到计算机之间任何与 TCP/HTTP WinRM 相关的流量,因为客户端不会开始交互并引发错误。

于 2020-04-15T05:33:31.510 回答