Powershell winrm Trusted Hosts无法正常工作

时间:2012-08-24 13:28:23

标签: powershell winrm

我正在尝试在几台机器上设置远程管理。我可以从计算机上成功执行远程计算机上的命令,但我不希望任何人能够这样做。

我尝试在远程计算机上设置可信主机,然后重新启动服务,但似乎没有做任何事情。

例如,在远程计算机上:

 winrm set winrm/config/client '@{TrustedHosts="someIncorrectName"}'

然后我重启winrm服务。

为什么我仍然可以从笔记本电脑上运行远程命令?它不应该阻止执行命令吗?

我正在按以下方式运行命令:

Invoke-Command -cn remoteMachine -Credential $cred -scriptblock {get-process}

使用get-credential domain / username生成$ cred。

我已经阅读了一些关于TrustedHosts的内容,他们似乎就它的作用给出了相互矛盾的报道。有些人似乎说它可以防止命令在“可信主机”列表中未列出的计算机上执行。其他人说它是可以在该机器上运行命令的计算机列表。

MSDN说:“指定受信任的远程计算机列表。”这似乎意味着它是第二个选项(可以在机器上执行命令的计算机列表)。

我做错了什么?

由于

1 个答案:

答案 0 :(得分:6)

TrustedHosts没有按照您的想法行事。与Unix .rhosts不同,此设置适用于PowerShell 客户端,而不是远程服务器端点。这就是为什么它出现在:

WSMan:\localhost\Client

如果它与侦听器相关,则它将位于Service节点下。

正如另一个答案所涉及的,这通常用于非域或混合环境,以防止客户端向不受信任的远程计算机发送NTLM质询 - 响应或基本身份验证尝试。为什么?因为远程流氓服务器可能会捕获此信息并使用它来危害您的网络。当您处于混合环境中时,唯一可用的保护是SSL,许多人可能选择通过AllowUnencrypted = $false再次在Client驱动器的WSMAN节点中禁用此功能。

那么,你如何限制传入连接?您现在应该已建立连接,并开始查看远程服务器上的WSMAN:\localhost\Service节点。如果你这样做,你会看到:

   WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Service

Type            Name                           SourceOfValue   Value                                                                       
----            ----                           -------------   -----                                                                       
System.String   RootSDDL                                       ...    
System.String   MaxConcurrentOperations                        4294967295                                                                  
System.String   MaxConcurrentOperationsPerUser                 1500                                                                        
System.String   EnumerationTimeoutms                           240000                                                                      
System.String   MaxConnections                                 300                                                                         
System.String   MaxPacketRetrievalTimeSeconds                  120                                                                         
System.String   AllowUnencrypted                               false                                                                       
Container       Auth                                                                                                                       
Container       DefaultPorts                                                                                                               
System.String   IPv4Filter                                     *                                                                           
System.String   IPv6Filter                                     *                                                                           
System.String   EnableCompatibilityHttpList...                 false                                                                       
System.String   EnableCompatibilityHttpsLis...                 false                                                                       
System.String   CertificateThumbprint                                                                                                      
System.String   AllowRemoteAccess                              true                                                                        

现在,向下看这个列表,你会看到一些有针对性的命名属性,如IPv4FilterIPv6Filter。猜猜他们做了什么; - )