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