Windows 远程桌面连接 Ubuntu 服务器完整教程
为什么需要这份教程
在开始配置之前,让我们先了解一下你可能面临的困境。
一个常见的烦恼
想象这样的场景:你有多台 Ubuntu 服务器需要远程管理,每次打开远程桌面连接都要输入 IP 地址、用户名、密码……如果服务器多了,这个过程就变得相当繁琐。
你可能会想:能不能像打开本地程序一样,双击一个图标就直接连进去?
答案是可以的——但 Windows 默认不允许你这样做。
这不是 Bug,而是”安全策略”
当你尝试在远程桌面连接中勾选”记住我的凭据”时,会发现:
- 对于加入域的 Windows 服务器,凭据可以正常保存
- 对于 Linux 服务器(包括 Ubuntu),即使勾选了也不生效
这是因为 Windows 的组策略默认禁止将凭据保存到非域服务器。微软的出发点是安全——防止用户把密码随意保存到不受信任的机器上。
但对于我们这些在局域网内管理 Ubuntu 服务器的用户来说,每次输入密码确实很麻烦。
本教程将帮你实现
通过本教程,你将获得以下体验:
- 一键连接:双击 RDP 文件直接进入 Ubuntu 桌面,无需输入任何凭据
- 多服务器管理:为每台服务器创建独立的快捷方式,一目了然
- 自定义显示:可以指定在哪个显示器上全屏显示,适配多屏工作环境
- 安全可控:密码经过加密存储,只能在当前电脑、当前用户下使用
技术流程概览
1 | 修改组策略注册表(允许保存凭据) |
整个配置过程只需几分钟,一劳永逸。
实际环境说明
本教程基于以下实际环境编写和验证:
| 项目 | 本教程环境 | 说明 |
|---|---|---|
| 客户端系统 | Windows 10/11 | Windows 7 也适用,步骤类似 |
| 服务端系统 | Ubuntu 24.04 LTS | 任何支持 RDP 的 Linux 发行版均可 |
| 远程桌面协议 | RDP (端口 3389) | Ubuntu 24.04 使用 GNOME Remote Desktop |
| 服务器 IP | 192.168.5.8 | 替换为你的实际 IP 地址 |
| 登录用户名 | cpu | 替换为你的实际用户名 |
前提条件:Ubuntu 服务端已开启远程桌面共享功能。如果还没配置,请先参阅《Ubuntu 24.04 自动登录 + 远程桌面固定密码完整教程》。
第一部分:理解问题
在动手之前,让我们先理解为什么 Windows 默认不让我们保存凭据。
Windows 凭据保存机制
Windows 使用「凭据管理器」来存储各种登录信息。当你连接远程桌面时:
- 远程桌面客户端尝试从凭据管理器获取保存的密码
- 组策略检查是否允许将凭据委派给目标服务器
- 如果策略禁止,即使凭据已保存也不会使用
为什么非域服务器被限制
默认的组策略设置如下:
- AllowSavedCredentials:只允许对域内服务器使用保存的凭据
- AllowSavedCredentialsWhenNTLMOnly:使用 NTLM 认证时同样受限
Ubuntu 服务器不在 Windows 域内,且使用 NTLM 认证方式,因此被双重限制。
我们的解决方案
修改注册表,将组策略中的限制放开,允许对所有远程桌面服务器(TERMSRV/*)使用保存的凭据。
第二部分:修改组策略注册表
这是实现免密登录的关键前提,必须先完成这一步。
步骤 1:以管理员身份打开 PowerShell
- 按
Win + X键 - 选择「Windows PowerShell (管理员)」或「终端 (管理员)」
- 如果弹出 UAC 提示,点击「是」
步骤 2:执行注册表修改命令
复制以下命令并粘贴到 PowerShell 中执行:
1 | # 创建组策略注册表项 |
命令解释:
| 参数 | 含义 |
|---|---|
HKLM |
HKEY_LOCAL_MACHINE,系统级注册表 |
/v |
要创建或修改的值名称 |
/t REG_DWORD |
32 位整数类型 |
/t REG_SZ |
字符串类型 |
/d 1 |
设置值为 1(启用) |
/f |
强制覆盖,不提示确认 |
TERMSRV/* |
匹配所有远程桌面服务器 |
预期输出:
1 | 操作成功完成。 |
步骤 3:注销并重新登录
修改组策略后,需要注销当前 Windows 用户并重新登录才能生效。
注意:重启电脑也可以,但注销重新登录更快。
第三部分:创建 RDP 配置文件
现在来创建 RDP 快捷方式文件。有两种方法可选。
方法一:通过远程桌面程序保存(推荐新手)
这是最直观的方法,适合不熟悉 RDP 文件格式的用户。
- 按
Win + R,输入mstsc并回车,打开远程桌面连接 - 输入 Ubuntu 服务器的 IP 地址(如
192.168.5.8) - 点击「显示选项」展开详细设置
- 在「常规」选项卡中输入用户名
- 在「显示」选项卡中设置分辨率和显示器选项
- 点击「另存为」,将
.rdp文件保存到桌面 - 暂时不要点击连接
方法二:手动创建 RDP 文件(推荐进阶用户)
如果你需要精确控制每个参数,可以手动创建。
- 在桌面新建一个文本文件
- 将文件扩展名改为
.rdp(如Ubuntu-192.168.5.8.rdp) - 用记事本打开,输入以下内容:
1 | screen mode id:i:2 |
参数说明:
| 参数 | 值 | 含义 |
|---|---|---|
screen mode id:i:2 |
2 | 全屏模式(1=窗口模式) |
use multimon:i:1 |
1 | 使用多显示器(0=单显示器) |
desktopwidth:i:1920 |
1920 | 远程桌面宽度 |
desktopheight:i:1080 |
1080 | 远程桌面高度 |
session bpp:i:32 |
32 | 色深(位/像素) |
full address:s:192.168.5.8 |
IP | 服务器地址 |
username:s:cpu |
用户名 | 登录用户名 |
prompt for credentials:i:0 |
0 | 不提示输入凭据 |
authentication level:i:0 |
0 | 连接时不警告 |
第四部分:为 RDP 文件添加加密密码
RDP 文件中的密码必须经过 Windows DPAPI 加密,不能明文存储。
步骤 1:准备 PowerShell 脚本
打开普通(非管理员)PowerShell,执行以下脚本:
1 | # ========== 配置区域 ========== |
脚本说明:
| 步骤 | 说明 |
|---|---|
| 加密密码 | 使用 Windows DPAPI 将密码加密为十六进制字符串 |
| 移除旧密码 | 防止文件中出现重复的密码行 |
| 设置不提示 | 确保连接时不弹出密码输入框 |
| 添加新密码 | 将加密后的密码追加到文件末尾 |
预期输出:
1 | 密码已成功添加到: C:\Users\xxx\Desktop\xxx.rdp |
步骤 2:验证 RDP 文件
用记事本打开 RDP 文件,应该能看到类似这样的一行:
1 | password 51:b:01000000D08C9DDF0115D1118C7A00C04FC297EB... |
这就是加密后的密码,只能在当前电脑、当前用户下解密使用。
第五部分:批量处理多台服务器
如果你有多台服务器需要配置,可以使用批量脚本。
批量添加密码脚本
1 | # ========== 配置区域 ========== |
第六部分:多显示器配置
如果你有多个显示器,可以指定远程桌面在哪个屏幕上显示。
查看显示器编号
在 PowerShell 中执行:
1 | Add-Type -AssemblyName System.Windows.Forms |
示例输出:
1 | 设备: DISPLAY1, 主屏: True, 位置: {X=0,Y=0,Width=1920,Height=1080} |
指定显示器
在 RDP 文件中添加以下参数:
1 | use multimon:i:1 |
| 参数值 | 含义 |
|---|---|
selectedmonitors:s:0 |
在主屏显示 |
selectedmonitors:s:1 |
在副屏显示 |
selectedmonitors:s:0,1 |
跨两个屏幕显示 |
第七部分:RDP 文件完整参数参考
以下是常用的 RDP 参数汇总:
| 参数 | 说明 | 常用值 |
|---|---|---|
full address:s: |
服务器地址 | IP 或主机名 |
username:s: |
登录用户名 | 如 cpu |
password 51:b: |
加密后的密码 | 十六进制字符串 |
prompt for credentials:i: |
是否提示输入凭据 | 0=否,1=是 |
screen mode id:i: |
显示模式 | 1=窗口,2=全屏 |
use multimon:i: |
多显示器 | 0=单屏,1=多屏 |
selectedmonitors:s: |
指定显示器 | 0=主屏,1=副屏 |
desktopwidth:i: |
宽度 | 如 1920 |
desktopheight:i: |
高度 | 如 1080 |
session bpp:i: |
色深 | 通常 32 |
authentication level:i: |
认证级别 | 0=不警告 |
enablecredsspsupport:i: |
CredSSP 支持 | 1=启用 |
第八部分:完整验证清单
配置完成后,请按以下步骤验证。
验证 1:确认组策略已生效
在 PowerShell 中执行:
1 | reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation" /s |
预期输出应包含:
1 | AllowSavedCredentials REG_DWORD 0x1 |
验证 2:检查 RDP 文件内容
用记事本打开 RDP 文件,确认包含:
password 51:b:行(加密密码)prompt for credentials:i:0
验证 3:双击 RDP 文件测试
- 双击桌面上的 RDP 文件
- 如果弹出证书警告,点击「是」继续
- 应该直接进入 Ubuntu 桌面,无需输入任何密码
第九部分:常见问题处理
问题 1:双击 RDP 文件仍然提示输入密码
可能原因及解决方法:
| 原因 | 解决方法 |
|---|---|
| 组策略未生效 | 确认已执行注册表命令,然后注销重新登录 |
| RDP 文件配置错误 | 确认 prompt for credentials:i:0 |
| 密码未正确加密 | 重新运行 PowerShell 脚本添加密码 |
| 用户名格式错误 | 确认 username:s:用户名 格式正确 |
问题 2:连接时提示”凭据无法工作”
解决方法:
- 确认 Ubuntu 服务端的远程桌面密码正确
- 检查是否修改过 Ubuntu 密码但未更新 RDP 文件
- 重新执行加密密码脚本
问题 3:如何还原组策略修改
如果需要恢复默认设置,以管理员身份执行:
1 | reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation" /f |
然后注销重新登录。
问题 4:将 RDP 文件复制到其他电脑后无法使用
这是正常现象。RDP 文件中的密码使用 Windows DPAPI 加密,绑定到:
- 当前电脑的硬件标识
- 当前登录用户的凭据
在其他电脑上,需要重新运行加密密码脚本。
安全说明
在享受便利的同时,请了解以下安全事项:
密码存储安全性
| 安全措施 | 说明 |
|---|---|
| DPAPI 加密 | 密码经过 Windows 数据保护 API 加密 |
| 用户绑定 | 只能被创建密码的用户解密 |
| 机器绑定 | 只能在创建密码的电脑上使用 |
风险提示
- RDP 文件可以被当前用户直接使用,无需再次输入密码
- 如果电脑被他人使用(同一用户账户),他们也可以连接到服务器
- 建议对重要服务器使用更强的访问控制(如 VPN、跳板机)
最佳实践
- 仅在可信的个人电脑上启用免密登录
- 确保 Windows 用户账户有强密码并启用屏幕锁定
- 定期审查已保存的 RDP 凭据
命令速查表
1 | # === 组策略配置 === |
总结
通过本教程,你已经学会了:
- 修改 Windows 组策略,允许保存 RDP 凭据到非域服务器
- 创建 RDP 配置文件,预设服务器地址和显示选项
- 使用 PowerShell 加密密码,实现免密自动登录
- 配置多显示器,指定远程桌面在哪个屏幕显示
- 批量处理多台服务器,提高管理效率
现在,双击桌面上的 RDP 图标,就能一键连接到你的 Ubuntu 服务器了!