我正在尝试从我的域加入PC远程powershell到我们DMZ的服务器,但我不知道如何使它工作。
DMZ服务器在启用的默认端口5985上为HTTP配置了一个侦听器。机器中的两个网卡都被标记为公共网络,因此我更改了Windows远程管理(HTTP-In)防火墙规则,使公共配置文件接受来自我的IP以及已经配置的本地子网的连接。
在我的客户端机器(Windows 10)上,我将服务器的主机名添加到WSMan:localhost client TrustedHosts,并将LocalAccountTokenFilterPolicy(值:1,类型:DWORD)添加到注册表中。
我用我的本地凭据为服务器(servernameusername)创建了一个凭据对象,然后我尝试$Sess = New-PSSession -ComputerName DMZCOMPUTER -Port 5985 -Credential $Cred
连接总是尝试使用Kerberos连接到机器,这显然是不工作的。
如果我尝试$Sess = New-PSSession -ComputerName DMZCOMPUTER -Port 5985 -Credential $Cred -Authentication Basic
,我得到一个错误,未加密的流量目前被禁用。其他认证方案产生不同的错误消息,但我从来没有能够远程。
我是否错过了某个配置?需要哪些设置(服务器&
我最终弄明白了,我所做的有几个问题。首先,https://blogs.msdn.microsoft.com/wmi/2009/07/24/powershell-remoting-between-two-workgroup-machines/上的链接有一些不正确的信息。它声明LocalAccountTokenFilterPolicy注册表项应该在客户端机器上,这是不正确的,它应该在服务器机器上。
另一个修复只是我在TrustedHosts值中使用服务器的FQDN,然后在尝试创建会话时仅使用主机名。
如果有人试图让这个工作的步骤如下:
- 在服务器机上运行
Enable-PSRemoting
- 这将启动WinRM服务并将其启动设置为自动 它将创建一个HTTP侦听器
- 您可以通过运行
winrm enumerate winrm/config/listener
来验证这一点
- 启用Windows远程管理防火墙规则
- 创建并配置
LocalAccountTokenFilterPolicy
注册表项 - 重置四个会话主机的权限
- 您可以通过运行
Get-PSSessionConfiguration
来验证这一点
- 您可以通过运行
- 在客户端启动WinRM服务
-
Set-Item WSMan:localhostClientTrustedHosts -Value <hostname or FQDN or server>
运行- 你可以把
-Concatenate
添加到Set-Item
的末尾,如果你想添加一个服务器到列表
- 你可以把
- 运行
$Cred = Get-Credential
我刚刚输入了一个用户名和密码(不是服务器名用户名)的kevmar建议 - 执行
$S = New-PSSession -ComputerName <same name exactly that you put in the TrustedHosts> -Credential $Cred
命令 - 如果一切正常,命令应该返回
- 如果您得到一个提到Kerberos的错误,请检查您在
ComputerName
参数和TrustedHosts 中使用了相同的名称 - 如果你得到一个访问拒绝错误检查,说明
LocalAccountTokenFilterPolicy
是在服务器上配置的
首先尝试用用户名和密码创建一个凭据对象。跳过在凭据中指定域或服务器名称的尝试。
然后尝试连接IP地址而不是计算机名。您仍然需要将其添加到可信主机值中。
最后使用Test-WSMan
来解决您的问题。提供的错误消息应该会给您一个关于问题所在的强烈提示。