☰
Windows与Linux双向远程桌面配置指南:xrdp、VNC与rdesktop实战
2026/10/4 12:25:36 网站建设 项目流程

简介:这份PDF资料面向运维人员与系统管理员,聚焦Windows与Linux双向远程桌面连接的实现方法,解决跨平台远程访问中图形界面缺失、服务配置与端口放行等常见问题。资源包共1个PDF文件,大小约64KB,内容以CentOS 6.6为例,涵盖Windows通过RDP连接Linux、Linux借助rdesktop或tsclient连接Windows,以及Linux远程Linux的完整流程。文中具体涉及GNOME图形界面检查与安装、VNCServer与xrdp的部署配置、防火墙放行5900至5905及3389端口、全屏退出快捷键,以及xrdp登录失败与最大会话数超限的排错思路。目前已有12738人学习下载,适合需要快速掌握跨平台远程桌面配置与故障排查的读者参考。

1. 双向远程桌面这件事,比想象中更值得折腾

很多人第一次接触远程桌面,都是从一个很具体的场景开始的:手边一台 Windows 笔记本,机房或者云上跑着一台 Linux 服务器,想直接在图形界面里点两下,而不是对着黑漆漆的终端敲命令。反过来也一样,Linux 桌面用久了,偶尔要连回一台 Windows 机器处理点只能在 Windows 上跑的东西。这时候问题就来了——Windows 连 Linux 大家第一反应是 VNC,Linux 连 Windows 大家第一反应是 rdesktop,但真到动手的时候,端口、防火墙、会话数、颜色深度这些细节一个接一个往外冒,翻车往往就翻在这些地方。

这份笔记围绕的就是 Windows 和 Linux 之间的双向远程桌面连接,以 CentOS 6.6 为例,把 Windows 远程 Linux(走 xrdp + VNC)和 Linux 远程 Windows(走 rdesktop/tsclient)两条链路都拆开讲清楚。它适合两类人:一类是刚接手一台 Linux 服务器、需要图形化操作但又不想装一堆重型工具的运维新手;另一类是用惯了命令行、偶尔需要跨系统连一下、想把参数和坑一次性搞明白的老手。下面按“先能连上、再连得稳、最后知道哪里会炸”的顺序往下走。

2. Windows 远程 Linux:xrdp 加 VNC 这条链路怎么搭

Windows 自带的远程桌面走的是 RDP 协议,而 Linux 默认并不认 RDP,所以中间需要一个翻译层,xrdp 干的就是这件事。它监听 3389 端口接收 RDP 请求,再转给后端的 VNC 会话去渲染图形界面。理解了这个结构,后面每一步配置就都有落点了:GNOME 是画图的基础,VNC Server 是实际干活的,xrdp 是对外的门面。

2.1 先确认 GNOME 图形界面在不在

远程桌面本质上是把图形界面通过网络传过来,如果服务器上压根没装桌面环境,后面全是白搭。CentOS 6.6 最小化安装默认是不带 GNOME 的,所以第一步先查。

# 查询系统里是否已经装了桌面相关的包 rpm -qa | grep desktop

如果输出里能看到 gnome-desktop 之类的包,说明桌面环境已经就位,可以跳到下一步。如果什么都没查到,就得先补安装源再装图形界面:

# 安装 X 窗口系统、中文支持和桌面环境 yum -y groupinstall "XWindowSystem" "Chinese Support" "Desktop"

这里三个组包各有分工:XWindowSystem 是图形底层,Chinese Support 负责中文显示不乱码,Desktop 才是 GNOME 本体。少装任何一个,后面连上去要么黑屏要么满屏方块。装完之后建议init 5切到图形模式确认一下,能正常进桌面再继续。

2.2 装 VNC Server 并设好登录密码

xrdp 自己不画界面,真正渲染的是 VNC 会话,所以 VNC Server 必须先装好。在线环境直接 yum,离线环境就本地 rpm 安装。

# 在线安装 tigervnc-server yum -y install tigervnc-server # 或者离线本地安装(版本按自己系统匹配) rpm -ivh tigervnc-server-1.1.0-18.el6.x86_64.rpm # 设置 VNC 登录密码,这个密码是连 VNC 会话时用的 vncpasswd

vncpasswd会让你输两遍密码,这个密码和系统用户密码是两码事,别搞混。设完之后要改配置文件,把用户和显示号绑上去:

# 编辑 VNC 服务配置 vim /etc/sysconfig/vncservers # 在文件里加上类似这样一行,1 表示显示号,root 是登录用户 VNCSERVERS="1:root" VNCSERVERARGS[1]="-geometry 1280x720"

显示号这个数字很关键,它决定了后面端口是 5901 还是 5902。VNCSERVERS="1:root"里的 1 就是显示号,对应端口 5900+1=5901。配好之后设开机启动并重启服务:

chkconfig vncserver on service vncserver restart

2.3 装 xrdp 并调颜色深度

VNC 就绪后,装 xrdp 把 RDP 请求接进来。CentOS 6 的源里不一定有 xrdp,所以先补 epel 库。

# 安装 epel 扩展源 yum -y install epel-release # 安装 xrdp yum -y install xrdp

离线环境可以去 rpmfind.net 搜对应版本,比如rpm -ivh xrdp-0.6.1-5.el6.x86_64.rpm。装完先别急着启动,改一个关键参数:

# 编辑 xrdp 主配置 vim /etc/xrdp/xrdp.ini # 把默认的 24 位色深改成 32 位 max_bpp=32

max_bpp控制颜色深度,默认 24 在某些 Windows 客户端上会出现色彩异常或者连接后花屏,改成 32 兼容性更好。改完启动服务并设开机自启:

chkconfig xrdp on service xrdp start

2.4 防火墙放行端口

服务都起来了,连不上十有八九是防火墙。VNC 用 5900 到 5905 这一段(按显示号递增),xrdp 用 3389。

# 放行 VNC 端口段和 xrdp 的 3389 iptables -I INPUT -p tcp --dport 5900:5905 -j ACCEPT iptables -I INPUT -p tcp --dport 3389 -j ACCEPT # 保存规则,防止重启后失效 service iptables save

端口范围不是固定的,你有几个 VNC 会话就放到几。如果显示号开到 3,那至少得放到 5903。放行完在 Windows 上打开远程桌面,输入 Linux 服务器 IP,弹出的 xrdp 登录框里选 sesman-Xvnc 模块,填用户名和 VNC 密码就能进桌面了。

3. Linux 远程 Windows:rdesktop 和 tsclient 怎么配

反过来从 Linux 连 Windows 就简单多了,因为 Windows 原生支持 RDP,Linux 这边只需要一个 RDP 客户端。rdesktop 是命令行工具,tsclient 是它的图形前端,两个配合用最顺手。这条链路的核心不在 Linux 端,而在 Windows 端有没有把远程桌面服务打开、防火墙有没有放行。

3.1 Windows 端先把远程桌面打开

这一步在 Windows 上操作,不在 Linux 上。右键“计算机”进属性,找到“远程设置”,在“远程桌面”里选允许运行任意版本远程桌面的计算机连接。如果是 Windows 10 及以上,路径在设置里的“系统 - 远程桌面”,把开关打开就行。

打开之后确认端口。Windows 远程桌面默认监听 3389,如果被改过,后面连接时要用IP:端口的格式。查端口可以在 Windows 命令行里跑:

# 在 Windows 的 cmd 里执行,看 3389 是否在监听 netstat -ano | findstr 3389

有 LISTENING 状态就说明服务在跑。接着放行防火墙:

# 在 Windows 防火墙里放行 3389,或者直接允许远程桌面应用通过防火墙 netsh advfirewall firewall add rule name="RDP" dir=in action=allow protocol=TCP localport=3389

3.2 Linux 端装 rdesktop 和 tsclient

回到 Linux,装两个包就够了。

# rdesktop 是核心的 RDP 客户端 yum -y install rdesktop # tsclient 是图形化前端,方便保存会话 yum -y install tsclient

装完之后,如果你习惯命令行,其实一条命令就能连:

# 直接连 Windows,-g 指定分辨率,-a 指定色深 rdesktop -g 1280x720 -a 16 192.168.1.100

-g是窗口分辨率,-a是颜色深度,16 位在带宽紧张时更流畅,24 位画质更好但吃带宽。如果 Windows 端口不是 3389,写成192.168.1.100:13389这种格式。

3.3 用 tsclient 保存会话配置

命令行每次敲参数麻烦,tsclient 可以把配置存下来。在 Linux 桌面里打开“应用程序 - Internet - 终端服务器客户机”,点 Add Connection,协议选 Windows Terminal Service,然后依次填:

字段填什么说明
Name自定义会话名比如 win-server
HostWindows 的 IP端口非默认时写 IP:端口
UsernameWindows 用户名域用户写 域\用户名
Password登录密码可留空,连接时再输
Resolution分辨率按显示器实际填
Color Depth色深16 或 24

保存后主界面双击会话就能连。这里有个细节:如果 Windows 账户没设密码,RDP 默认是拒绝连接的,得先在 Windows 上给账户设个密码,或者改组策略允许空密码连接,但后者不安全,不建议。

3.4 Linux 远程 Linux 的 VNC 方式

顺带把 Linux 连 Linux 也说一下,因为很多人会混。Linux 连 Linux 走 VNC 更直接,前提是被连的那台已经装好 VNC Server 并放行了端口。客户端这边同样用 tsclient,协议选 VNC,Host 填IP:显示号,比如192.168.1.100:1,密码就是之前vncpasswd设的那个。显示号对应端口 5900+显示号,填 1 就是连 5901。

4. 避坑与排查:连不上、连上黑屏、会话爆满怎么破

远程桌面这类东西,配置本身不难,难的是出错时信息不直观。下面几条都是实际会撞上的,按“现象 → 原因 → 解决”捋一遍。

4.1 登录提示 login failed,日志报 no display in range

现象:用户名密码都对,但 xrdp 登录框一直提示xrdp_mm_process_login_response: login failed,查/var/log/xrdp-sesman.log看到X server — no display in range is available。

原因:xrdp 的会话数达到上限了。默认配置下 MaxSessions 比较小,之前的会话没正常释放,新连接就分不到显示号。

解决:先清掉残留的 xrdp 进程,再调大会话上限。

# 杀掉所有残留的 xrdp 进程 ps -ef | grep xrdp | grep -v grep | awk '{print $2}' | xargs kill -9 # 编辑会话管理配置 vim /etc/xrdp/sesman.ini # 调大最大会话数,并让断开的会话自动注销 MaxSessions=100 KillDisconnected=1 IdleTimeLimit=1800 # 重启 xrdp 生效 service xrdp restart

KillDisconnected=1是关键,它让断开连接的会话自动注销,不然会话会一直占着显示号。IdleTimeLimit是空闲超时,单位秒,1800 就是半小时没操作自动断。

4.2 连上后黑屏或者只有一片灰

现象:xrdp 登录成功,但进去之后桌面是黑的,或者只有一片灰色没有图标。

原因:GNOME 桌面环境没装全,或者 VNC 会话启动时没加载到窗口管理器。

解决:先确认rpm -qa | grep desktop有输出,没有就补装 groupinstall。如果装了还黑屏,检查/root/.vnc/xstartup文件,确保里面启动了 gnome-session:

# 查看 xstartup 内容 cat /root/.vnc/xstartup # 确保有类似这行,没有就加上 gnome-session &

改完重启 vncserver 和 xrdp。

4.3 端口放行了还是连不上

现象:iptables 规则加了,但 Windows 远程桌面还是提示找不到计算机。

原因:规则加在了错误的链上,或者被前面的 DROP 规则拦了。-I INPUT是插到最前面,如果用-A追加到末尾,前面有 REJECT 规则就会先被拦。

解决:用iptables -L -n --line-numbers看规则顺序,确认放行规则在拒绝规则之前。另外 CentOS 6 的 iptables 规则重启会丢,记得service iptables save。

4.4 全屏之后退不出来

现象:远程桌面进去默认全屏,找不到退出按钮。

原因:不同客户端退出全屏的快捷键不一样,不知道就容易卡住。

解决:Linux 远程 Linux 走 VNC 时按 F8,弹出菜单里点 Exit Viewer 或者取消 Full Screen 勾选。Linux 远程 Windows 走 rdesktop 时按 Ctrl+Alt+Enter 切换全屏。这两个组合键记牢,能省不少重启客户端的功夫。

4.5 颜色异常或者花屏

现象:连上之后画面颜色不对,或者有花屏条纹。

原因:色深不匹配。xrdp 默认 24 位,某些 Windows 客户端协商时出问题。

解决:把/etc/xrdp/xrdp.ini里的max_bpp改成 32,重启 xrdp。rdesktop 这边用-a 24或-a 32显式指定色深,别用默认值。

5. 把连接做成可复用的脚本和习惯

配置调通只是第一步,真正省事的是把常用连接固化成脚本,下次一条命令或者双击一下就进去。我一般会在 Linux 上给每台常连的 Windows 写一个小脚本,放在~/bin下,加上执行权限,用的时候直接敲名字。

#!/bin/bash # 保存为 ~/bin/rdp-win.sh,chmod +x 后可直接运行 # 连接公司内网的 Windows 开发机,分辨率 1600x900,24 位色深 rdesktop -g 1600x900 -a 24 -u developer -d COMPANY 192.168.1.100

-u指定用户名,-d指定域,这两个参数在域环境里能省掉每次手动输的麻烦。如果密码也不想每次输,可以加-p,但明文密码写在脚本里不安全,我一般用-p -让 rdesktop 交互式提示输入。

Windows 连 Linux 这边,可以把 xrdp 的连接信息存成.rdp文件,双击直接连。用记事本新建一个文件,内容如下:

# 保存为 linux-server.rdp,双击即可用远程桌面打开 full address:s:192.168.1.200 username:s:root screen mode id:i:1 desktopwidth:i:1280 desktopheight:i:720 session bpp:i:32

full address是目标 IP,session bpp对应色深,和 xrdp 那边的 max_bpp 保持一致。这个文件的好处是不用每次在远程桌面里手填 IP,发给同事也能直接用。

验证连接是否稳定,我习惯连上之后跑一个持续的操作,比如拖动窗口、打开终端敲几条命令,观察有没有卡顿或者断连。如果几分钟内频繁掉线,多半是网络抖动或者会话超时设置太短,回去看IdleTimeLimit和KillDisconnected这两个参数。另外 xrdp 的日志在/var/log/xrdp.log和/var/log/xrdp-sesman.log,连不上时先看这两个文件,比瞎猜快得多。

从那以后我每次配完远程桌面,都会先在本机用telnet IP 端口确认端口通不通,再实际连一次,最后把连接脚本和 rdp 文件一起归档。这套流程走下来,基本不会再出现“配置都对但就是连不上”的玄学问题。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询