全部指南
您需要从客户中心的服务器页面获取三项信息:服务器的 IP 地址(下文以 SERVER_IPAdministrator
从 Windows 连接
- 按 Win+R,输入
并按 Enter,打开“远程桌面连接”。mstsc - 点击显示选项。在“计算机”栏中输入
(如果更改过端口,请加上SERVER_IP ),在“用户名”栏中输入:PORT 。Administrator - 点击连接并输入密码。
- Windows 会警告该证书并非来自受信任的证书颁发机构,因为服务器使用的是自签名证书。这属于正常现象:勾选不再询问我是否连接到此计算机,然后点击是。
您也可以从终端发起连接:
mstsc /v:SERVER_IP
将连接保存为 .rdp 文件
在常规选项卡中,点击另存为。以后双击该文件,即可使用相同设置重新连接。只有在没有其他人使用的电脑上,才勾选允许我保存凭据。
剪贴板与驱动器重定向
在本地资源选项卡中,勾选剪贴板,即可在您的电脑和服务器之间复制粘贴。如需访问本地文件,请点击详细信息,展开驱动器并勾选所需的驱动器;它会出现在服务器的文件资源管理器中。只共享您需要的内容:在服务器上您的会话中运行的任何程序,都可以读写重定向的驱动器。
在会话中,按 Ctrl+Alt+End 相当于发送 Ctrl+Alt+Del,按 Ctrl+Alt+Break 可切换全屏模式。
从 macOS 连接
- 从 Mac App Store 安装 Windows App。它是微软的客户端,已于 2024年取代 Microsoft Remote Desktop。
- 点击 +,然后选择添加电脑。
- 在“电脑名称”中输入
(或SERVER_IP )。在“凭据”下添加一个用户账户,填写SERVER_IP:PORT 和您的密码。Administrator - 在设备和音频选项卡中,保持剪贴板共享开启。在文件夹选项卡中,勾选重定向文件夹,并添加一个要与服务器共享的文件夹。
- 保存后,双击新添加的电脑进行连接,并接受证书提示。
从 Linux 连接
Remmina
Remmina 是一款图形界面客户端,大多数发行版都提供了该软件包。在 Debian 和 Ubuntu 上:
sudo apt install remmina remmina-plugin-rdp
新建一个连接配置文件,选择 RDP 协议,然后输入 SERVER_IP
在命令行中使用 FreeRDP
在当前的 Debian 和 Ubuntu 上,FreeRDP 3 的软件包名为 freerdp3-x11xfreerdp3xfreerdp
sudo apt install freerdp3-x11
mkdir -p ~/rdp-share
xfreerdp3 /v:SERVER_IP /u:Administrator /dynamic-resolution +clipboard /drive:share,$HOME/rdp-share
FreeRDP 会提示输入密码,并在首次连接时要求您接受服务器的证书。不要把密码写在命令中:如果通过 /p:/v:SERVER_IP:PORT
从 iOS 和 Android 连接
从 App Store 或 Google Play 安装 Windows App。在这两个平台上,它都取代了微软旧版的远程桌面应用(又名 RD Client)。点击 +,添加电脑,输入 SERVER_IP
更改 RDP 端口
把远程桌面从 3389 端口换到其他端口,可以减少日志中的自动化登录尝试次数。但这并不能让服务躲过全面的扫描,因此请将其视为减少日志噪音的手段,并与下文的 IP 白名单结合使用。
请以管理员身份在 PowerShell 中运行以下命令。选择一个介于 1024 和 49151 之间的空闲端口;本示例使用 33890:
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber -Value 33890
New-NetFirewallRule -DisplayName 'RDP 33890 TCP' -Direction Inbound -Protocol TCP -LocalPort 33890 -Action Allow
New-NetFirewallRule -DisplayName 'RDP 33890 UDP' -Direction Inbound -Protocol UDP -LocalPort 33890 -Action Allow
Restart-Service -Name TermService -Force
您的会话会断开。请重新连接到 SERVER_IP:33890
Disable-NetFirewallRule -DisplayGroup 'Remote Desktop'
启用网络级别身份验证
启用网络级别身份验证(NLA)后,客户端必须先证明自己知道密码,服务器才会创建会话或显示登录界面。未通过身份验证的客户端永远到不了 Windows 登录界面,从而减轻了机器人带来的负载,也缩小了攻击面。当前的 Windows 版本默认启用 NLA。要检查这一设置,请打开“系统属性”的“远程”选项卡:
SystemPropertiesRemote
请确保已勾选仅允许运行使用网络级别身份验证的远程桌面的计算机连接。也可以以管理员身份在 PowerShell 中进行设置:
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Value 1
NLA 无法处理已过期的密码,也无法处理必须在下次登录时更改的密码,因此请在密码过期之前更改密码。
修复常见错误
CredSSP:“出现身份验证错误”
如果错误消息中提到“CredSSP 加密数据库修正”(encryption oracle remediation),说明其中一方缺少 2018年发布的 CredSSP 安全更新(
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2 /f
连接后,在服务器上运行 Windows 更新并重启服务器。然后删除该设置,因为它会削弱您电脑的防护:
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /f
如果 Windows 提示的是 Credential Guard 不允许使用已保存的凭据,请在每次连接时输入密码,而不要保存密码。
“出现了内部错误”
- 等待两分钟后重试。服务器可能仍在启动或正在完成更新。
- 断开您这一端的所有 VPN 或代理,然后重试。
- 在您的 Windows 电脑上以管理员身份运行命令提示符,关闭 UDP 传输,然后重试:
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client" /v fClientDisableUDP /t REG_DWORD /d 1 /f
如果仍然失败,请删除“文档”文件夹中隐藏的 Default.rdp
登录后黑屏
- 请等待一分钟:首次登录时会创建您的用户配置文件,而且更新可能还在收尾。
- 按 Ctrl+Alt+End,打开任务管理器,选择运行新任务,然后启动
。explorer.exe - 在远程桌面连接中,于体验选项卡取消勾选持久位图缓存;在显示选项卡中降低分辨率,并取消勾选将我的所有监视器用于远程会话。
- 按 Ctrl+Alt+End,选择注销,然后重新连接。如果屏幕仍然是黑的,请从客户中心重启服务器。
“远程桌面无法连接到远程计算机”
检查 IP 地址和端口;如果设置了白名单,还要检查您当前的 IP 是否在白名单中。在您电脑上的 PowerShell 中测试该端口是否有响应:
Test-NetConnection -ComputerName SERVER_IP -Port 3389
TcpTestSucceeded : False
保护 RDP 安全
对整个互联网开放的 RDP 端口会全天候遭受自动化的密码猜测。以下四项措施可以消除其中的大部分风险。
密码与账户
请使用由密码管理器生成、至少 16 个随机字符且未在其他任何地方使用过的密码。自动化攻击通常会尝试 Administrator
Rename-LocalUser -Name 'Administrator' -NewName 'YOUR_ADMIN_NAME'
账户锁定策略
在 15 分钟内输错 5 次密码后,将账户锁定 15 分钟。请在以管理员身份运行的命令提示符中执行:
net accounts /lockoutthreshold:5
net accounts /lockoutwindow:15
net accounts /lockoutduration:15
除非启用了允许管理员账户锁定策略,否则内置的 Administrator 账户不受锁定限制。微软在 2022年10月的更新中加入了该策略;在本地安全策略(secpol.msc
仅允许来自您 IP 的 RDP 连接
这是这些措施中最有效的一项:来自其他任何地址的连接都无法到达登录界面。请以管理员身份在 PowerShell 中将内置的远程桌面规则限制为仅允许您的地址:
Set-NetFirewallRule -DisplayGroup 'Remote Desktop' -RemoteAddress YOUR_IP
如果您已将 RDP 改到其他端口,请对您自己创建的规则执行同样的操作:
Set-NetFirewallRule -DisplayName 'RDP 33890 TCP' -RemoteAddress YOUR_IP
Set-NetFirewallRule -DisplayName 'RDP 33890 UDP' -RemoteAddress YOUR_IP
多个地址之间用逗号分隔。检查结果:
Get-NetFirewallRule -DisplayGroup 'Remote Desktop' | Get-NetFirewallAddressFilter
检查登录失败记录
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 20
事件 ID 4625 记录的是一次登录失败。如果持续出现来自未知地址的此类事件,说明 RDP 仍对互联网开放。请保持 Windows 更新,并参阅适用于 RDP 的 Windows 版本,确保运行的版本仍能获得安全修复。