Windows 计算机如何远程启用远程桌面 (RDP)

远程桌面协议 (RDP) 是一种流行、简单且方便的连接到远程 Windows 计算机的方法。借助 RDP,您可以完全访问远程计算机的图形桌面环境并使用它,就像它是您自己的本地设备一样。默认情况下,远程桌面在 Windows 和 Windows Server 的桌面版本上均处于禁用状态。在本文中,我们将了解在 Windows 中启用 RDP 的几种方法。

本地启用和禁用远程桌面

在 Windows 10 和 11 上启用远程桌面的最直观方法是使用 GUI。您可以启用 RDP:

但是,这需要对要启用 RDP 的计算机进行本地访问。您通常可以向用户询问(需要本地管理员权限)或本地技术支持。但是,如果远程分支机构中没有人可以在本地启用远程桌面怎么办?

让我们看一下允许您在远程主机(服务器或计算机)上远程启用远程桌面 (RDP) 的几种方法,

使用远程注册表启用 RDP

您可以使用注册表编辑器在远程计算机上启用远程桌面。这需要:

因此,要通过远程注册表启用远程桌面,请按照下列步骤操作:

  1. 按Win+R组合键,输入regedit.exe>确定;
  2. 在注册表编辑器中选择“文件”>“连接网络注册表”;
  3. 指定远程计算机的主机名或 IP 地址。如果远程计算机无法授权您作为当前用户,系统将提示您输入凭据;
  4. 远程计算机的注册表将出现在注册表编辑器中(只能访问 HKLM 和 HKEY_Users 配置单元);
  5. 转到远程计算机上的以下注册表项:HKLMSYSTEMCurrentControlSetControlTerminal Server。将 fDenyTSConnections 参数 (Type=REG_DWORD) 的值从 1 更改为 0;
  6. 如果远程计算机上启用了防火墙,则必须启用允许远程桌面连接的规则。您可以通过 GPO、PowerShell Remoting 或使用 Psexec 启用它(请查看本指南的下一部分)。

如何使用 PsExec 工具远程启用 RDP?

您可以使用 PsExec cmd 工具在远程 Windows 设备上启用远程桌面。

从 Microsoft 网站下载 PsExec 工具包,并将 PSTools.zip 存档解压到本地文件夹。

以管理员身份打开命令提示符并转到 PSTools 目录:

CD c:PSPStools

要使用 PSExec 在域中的远程计算机上启用 RDP,请运行以下命令:

PsExec.exe /accepteula RemoteComputerName_or_IP reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

然后在 Windows Defender 防火墙中启用访问 RDP 端口的规则:

PsExec.exe /accepteula RemoteComputerName_or_IP netsh advfirewall firewall set rule group="remote desktop" new enable=Yes

如果远程计算机位于不同的域或工作组中,您可以提供具有管理员权限的用户名来连接到远程计算机:

PsExec.exe /accepteula RemoteComputerName_or_IP -u administrator reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

然后允许到 RDP 端口 (3389/TCP) 的入站连接:

PsExec.exe /accepteula RemoteComputerName_or_IP -u administrator netsh advfirewall firewall set rule group="remote desktop" new enable=Yes

现在尝试通过 RDP 连接到远程计算机。

使用 PowerShell 远程启用远程桌面

要远程启用 RDP,您需要在远程计算机上配置并运行 WinRM 服务(Windows 远程管理)。从 Windows Server 2012 开始,WinRM 服务在所有版本的 Windows Server 中默认启用。但是,WinRM 在客户端操作系统(例如 Windows 10 或 11)中默认禁用。

您可以使用 GPO 或在本地使用 PowerShell 在加入域的计算机上启用 WinRM。在 Windows 10/11 上本地启用 WinRM 服务并允许通过 PowerShell 远程处理进行访问的最简单方法是使用以下命令:

Enable-PSRemoting

WinRM 已更新以接收请求。

WinRM 服务类型更改成功。
WinRM 服务已启动。

接下来,您需要检查远程计算机上是否启用了 WinRM,以及是否允许 PSRemoting 连接。运行命令:

Test-WsMan 192.168.31.102

如果远程计算机上的 WinRM 服务响应,您将收到以下响应:

如果该服务被禁用或访问被 Windows Defender 防火墙阻止,则会出现错误:

Test-WsMan WSManFault:WinRM 无法完成操作。验证指定的计算机名称是否有效、该计算机是否可通过网络访问、WinRM 服务的防火墙例外是否已启用并允许从此计算机进行访问。默认情况下,公共配置文件的 WinRM 防火墙例外限制对同一本地子网内的远程计算机的访问。

因此,要通过 PowerShell 远程启用远程桌面,远程计算机必须满足以下要求:

  1. WinRM 服务应该启动;
  2. 您必须拥有远程设备的管理员权限;
  3. 具有高级安全规则的 Windows Defender 防火墙必须接受 WinRM 端口 TCP 5985 和 5986 上的 PowerShell 远程处理。您可以使用以下命令启用 WinRM 防火墙规则:netsh advfirewall 防火墙设置规则组=“Windows 远程管理”新启用=yes)

假设您要在 Windows Server 2022/2019/2016/2012R2 上远程启用 RDP。打开计算机上的PowerShell控制台并运行以下命令远程连接到服务器:

Enter-PSSession -ComputerName server.domain.local -Credential domainadministrator

提示:Enter-PSSession 和 Invoke-Command cmdlet 允许您通过 WinRM 在远程计算机上运行 PowerShell 脚本。

现在,您已经与计算机建立了远程会话,现在可以对其运行 PowerShell 命令。要启用远程桌面,只需将注册表参数fDenyTSConnections从1更改为0即可。运行命令:

Set-ItemProperty -Path 'HKLM:SystemCurrentControlSetControlTerminal Server'-name "fDenyTSConnections" -Value 0

当以这种方式(与 GUI 方法相反)启用 RDP 时,您需要手动启用远程桌面的 Windows 防火墙规则。运行命令:

Enable-NetFirewallRule -DisplayGroup "Remote Desktop"

如果由于某种原因缺少此 RDP 防火墙规则,您可以使用 netsh 手动创建它:

netsh advfirewall firewall add rule name="allow RemoteDesktop" dir=in protocol=TCP localport=3389 action=allow

或使用 Powershell:

New-NetFirewallRule -DisplayName 'Allow RemoteDesktop' -Profile @('Domain', 'Private') -Direction Inbound -Action Allow -Protocol TCP -LocalPort @('3389')

如果要限制允许连接到远程桌面的主机或子网,可以创建自定义规则,允许 Windows 防火墙仅接受来自特定 IP 地址、子网或 IP 范围的传入 RDP 连接。在这种情况下,您需要使用以下命令而不是上一个命令:

New-NetFirewallRule -DisplayName “Restrict_RDP_access" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 192.168.1.0/24,192.168.2.100 -Action Allow

如果需要启用安全 RDP 身份验证(NLA – 网络级身份验证),请运行以下命令:

Set-ItemProperty -Path 'HKLM:SystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp' -name "UserAuthentication" -Value 1

现在您可以从您的计算机检查远程主机上 TCP 端口 3389 的可用性。运行命令:

Test-NetConnection 192.168.1.11 -CommonTCPPort rdp

应该有这样的结果:

ComputerName : 192.168.1.11

RemoteAddress : 192.168.1.11

RemotePort : 3389

InterfaceAlias : Ethernet0

SourceAddress : 192.168.1.90

TcpTestSucceeded : True

这意味着远程主机上的 RDP 已启用,您可以使用 mstsc.exe、RDCMan 或任何替代 RDP 客户端建立远程桌面连接。

暗示。如果需要同时在多台远程计算机上启用 RDP,可以使用以下 PowerShell 脚本:

$comps = “Server1”, “Server2”, “Server3”, “Server4” Invoke-Command –Computername $comps –ScriptBlock {Set-ItemProperty -Path "HKLM:SystemCurrentControlSetControlTerminal Server" -Name "fDenyTSConnections" –Value 0} Invoke-Command –Computername $comps –ScriptBlock {Enable-NetFirewallRule -DisplayGroup "Remote Desktop"}

默认情况下,只有本地管理员组的成员才能通过 RDP 进行远程连接。要允许非管理员用户进行 RDP 连接,只需将域用户添加到远程桌面组即可。

您可以使用本地用户和组 MMC 管理单元 (LUSRMGR.MSC) 将所需用户添加到本地远程桌面用户。

或者,您可以使用 Enter-PSSession 远程更改 RD 用户组成员身份。使用以下命令将域用户ASmith添加到本地组中:

net localgroup "remote desktop users" /add "contosoasmith”

或者,您可以使用另一个 PS Remoting 命令 Invoke-Command,而不是 Enter-PSSession cmdlet:

Invoke-Command -Scriptblock {net localgroup "remote desktop users" /add "contosoasmith”} -Computer Server1.contoso.com

如何使用PowerShell检查远程计算机上是否启用了远程桌面?

考虑一个 PowerShell 脚本,它允许您远程获取网络中多台计算机上的 RDP 状态。设置一个变量,其中包含要检查远程桌面是否已启用的远程计算机列表:

$comps=’wks101’,’wks102’,’wks112’, ‘wks223’

您还可以检查 Active Directory 域中的所有计算机上是否启用了 RDP。要获取 AD 中活动计算机的列表,您可以使用 PowerShell Active Directory 模块中的 Get-ADComputer cmdlet:

$comps = (Get-ADComputer -Filter 'operatingsystem -like "*Windows 10*" -and enabled -eq "true"').Name

现在您需要获取列表中远程计算机上的 fDenyTSConnections 注册表参数的状态。

$Report = @()

$comps ='localhost','localhost'

foreach ($comp in $comps) {

    $RDPRegistry = Invoke-Command $comp -ScriptBlock { (Get-ItemProperty 'HKLM:SYSTEMCurrentControlSetControlTerminal Server').fDenyTSConnections } -ErrorAction SilentlyContinue  

    $RDPState = switch ($RDPRegistry)

        {

        '0' {"Enabled"}

        '1' {"Disabled"}

        Default {"n/a"}

        }

    $objReport = [PSCustomObject]@{

        ComputerName = $comp

        RDPState = $RDPState

    }

    $Report += $objReport

}

$Report

因此,您将获得一份很酷的报告,显示网络上的哪些计算机启用了远程桌面。

如何通过WMI启用远程桌面?

如果要在禁用 WinRM 的远程计算机上启用 RDP,可以使用 WMI PowerShell 命令。

提示:要访问远程计算机上的 WMI 命名空间,必须打开 TCP 端口 135,并且帐户必须具有 WMI 和 DCOM 访问权限。

要检查远程计算机 192.168.1.90 上是否启用了 RDP 访问,请运行以下命令(请参阅AllowTSConnections 属性的值):

Get-WmiObject -Class Win32_TerminalServiceSetting -Namespace rootCIMV2TerminalServices -Computer 192.168.1.90 -Authentication 6

要启用 RDP 并添加 Windows 防火墙例外规则,请运行以下命令:

(Get-WmiObject -Class Win32_TerminalServiceSetting -Namespace rootCIMV2TerminalServices -Computer 192.168.1.90 -Authentication 6).SetAllowTSConnections(1,1)
展开阅读全文

页面更新:2024-05-28

标签:子网   计算机   注册表   端口   防火墙   命令   规则   主机   用户   网络

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top