ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Win7 与麒麟 V10 双向远程桌面:VNC 5900/RDP 3389 排错

Win7 与麒麟 V10 双向远程桌面:VNC 5900/RDP 3389 排错

简介:这份文档围绕Windows与银河麒麟V10之间的双向远程桌面连接展开,面向需要跨平台运维、混合办公和国产化系统适配的IT人员,帮助解决不同操作系统间桌面访问、权限验证与网络策略配置等实际问题。包内为1个doc文件,压缩包约609KB,篇幅集中、便于按主题查阅,适合作为配置参考与排错手册使用。文档结合Win7与Kylin V10环境,梳理Windows借助VNC Viewer访问银河麒麟、银河麒麟通过桌面查看器连接Windows的两类场景,并涉及桌面共享、连接密码、防火墙策略、安全中心放行VNC Server及远程桌面端口等关键环节,提供可对照执行的配置思路和常见问题排查方向,便于读者快速定位跨系统连接障碍。已有21680人学习下载,对初次接触银河麒麟远程桌面或需要整理跨平台协作方案的技术人员具有较高参考价值。

1. 从一台 Win7 连到麒麟 V10:先把两条链路分清

银河麒麟 V10 和 Win7 互相远程桌面,真正容易翻车的不是点哪个按钮,而是两条链路用了两套协议:一条是 VNC 看麒麟桌面,一条是 RDP 进 Windows 会话。常见翻车是把 5900 和 3389 混成一个端口,排查半天以为是密码错。这个资源包解决的正是双向往返:Win7 装 VNC Viewer 连麒麟 V10 的桌面共享,麒麟 V10 用桌面查看器连 Win7 的远程桌面。适合需要在两套系统之间来回切、又不想搬两台显示器的运维和开发。下面按可复现顺序拆,先分清链路,再落配置,最后把常见坑逐条对掉。

2. VNC 与 RDP 的边界:端口、认证和桌面会话怎么选

2.1 为什么 Win7 连麒麟用 VNC,麒麟连 Win7 用 RDP

先把方向钉死:Win7 是客户端,银河麒麟 V10 是服务端,走 VNC;银河麒麟 V10 是客户端,Win7 是服务端,走 RDP。这个方向不是随便定的,而是由两端系统默认能提供什么决定的。Win7 原生带远程桌面服务端,开远程桌面后监听 3389,麒麟这边用桌面查看器就能连;银河麒麟 V10 常见镜像带桌面共享应用,对外提供 VNC 服务,Win7 装 VNC Viewer 就能看麒麟桌面。反过来硬做,Win7 默认没有 VNC 服务端,麒麟默认也不一定带 RDP 服务端,配置成本会高很多。

VNC 的底层是 RFB 协议,服务端把桌面帧缓冲的变化切块发给客户端,客户端把键盘鼠标事件回传。它更像“看屏幕”,连的是服务端上已经存在的图形会话,所以麒麟本机必须已经登录到桌面,桌面共享才有东西可发。RDP 是 Windows 的远程桌面协议,服务端会创建或接管会话,认证在协议层完成,剪贴板、音频、驱动器映射这些重定向能力更完整。两种协议都能跨平台,但边界不一样:VNC 适合“看已有桌面”,RDP 适合“进 Windows 会话”。

我一般会先画一张方向表再动手,避免把客户端和服务端装反。下面这张表是这类双系统场景里最常用的对照,端口和认证方式都按默认值写,实际环境如果改过端口,以ss或netstat的结果为准。

方向协议服务端客户端默认端口认证方式典型边界
Win7 → 麒麟 V10VNC/RFB麒麟桌面共享VNC Viewer5900 起桌面共享密码连已有图形会话,本机需登录桌面
麒麟 V10 → Win7RDPWin7 远程桌面麒麟桌面查看器3389Windows 账户密码Win7 需专业版/旗舰版/企业版,账户要有密码

选型理由落到一句话:Win7 连麒麟用 VNC,是因为麒麟侧现成有桌面共享;麒麟连 Win7 用 RDP,是因为 Win7 侧现成有远程桌面服务。两端都不要为了“统一协议”去装一堆额外服务,先把默认链路跑通,再谈加固。

2.2 端口不是只有 5900 和 3389:显示号、监听地址和防火墙

VNC 的端口是 5900 加显示号。第一个桌面通常是 5900,第二个是 5901,以此类推。VNC Viewer 里填IP:5900和只填IP有时候结果不一样,前者明确指定端口,后者依赖客户端默认值。RDP 默认 3389,改过端口就要在地址里写IP:端口。排查时不要只看“能不能 ping 通”,ping 通只说明 ICMP 到了,TCP 端口没开照样连不上。

先在麒麟上确认监听状态。下面这段命令只读,不会改配置,适合作为第一步:

# 查看 VNC/RDP 相关 TCP 监听;没有输出说明服务没起或端口不对 ss -lntp | grep -E ':(5900|5901|3389)\b' # 如果系统没有 ss,用 netstat 兜底 netstat -lntp | grep -E ':(5900|5901|3389)\b'

-l看监听,-n显示数字端口,-t只看 TCP,-p显示进程。重点看两列:Local Address 如果是127.0.0.1:5900,说明只允许本机连,外部 Win7 连不进来;如果是0.0.0.0:5900或具体网卡地址,才具备对外监听的条件。没有输出就先回到桌面共享应用,确认“允许其他人查看控制您的桌面”已经勾选并保存,再查服务是否随桌面会话启动。

防火墙是第二个关口。银河麒麟 V10 默认安全级别较高,桌面共享开了但外部连不上,很常见的原因是入站规则没放行。图形界面走安全中心:网络保护里做自定义配置,把 vncserver 勾上。命令行排查时先看规则,不要上来就清空:

# 查看当前 IPv4 规则,确认 5900/5901 是否被拒绝 sudo iptables -L -n -v # 清空规则前先备份,实验机也建议留一份 sudo iptables-save > /tmp/iptables-$(date +%F-%H%M).bak

iptables -L -n -v里-n不解析域名,-v显示包计数,能看出规则有没有命中。备份命令把当前规则写到/tmp下带时间戳的文件,后面出问题可以用iptables-restore回滚。注意:sudo iptables -F会清空所有链的规则,不是只清 5900,实验环境临时用可以,办公机或服务器上直接敲会把其他放行策略一起抹掉。清空后如果默认策略是 DROP,仍然不通;如果默认策略是 ACCEPT,短期能连,但重启后规则可能回来,问题会“时好时坏”。

更稳妥的做法是精确放行。下面两条只追加 5900 和 5901 的入站 TCP 放行,不碰其他规则:

# 精确放行 VNC 常用端口;生产环境建议再加 -s 限定来源 IP sudo iptables -A INPUT -p tcp --dport 5900 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 5901 -j ACCEPT # 查看追加后的规则位置 sudo iptables -L INPUT -n -v --line-numbers

-A INPUT追加到 INPUT 链末尾,-p tcp指定协议,--dport指定目标端口,-j ACCEPT放行。--line-numbers能看到规则序号,方便后续插入或删除。要不要持久化取决于发行版和镜像的防火墙管理方式,常见做法是用系统自带的防火墙保存机制,或者在安全中心里做自定义放行,不建议把iptables -F写进开机脚本。

2.3 网络与安全边界:内网直连、最小放行和加密补位

这类双系统远程桌面,最常见的部署位置是同一内网或同一实验网段。内网直连时,先保证两端 IP 互 ping 通,再把源地址限制到对端 IP,别把 5900 和 3389 对整个网段开放。VNC 的密码认证只解决“能不能进”,不解决传输加密;RDP 在 Windows 侧有网络级别身份验证,但也要看 Win7 的远程设置有没有勾选。敏感环境里,我一般会加一层 SSH 端口转发,把 VNC 端口收回到本机回环地址再连,减少直接暴露面。

SSH 端口转发的常见做法是:在 Win7 侧用支持 SSH 的终端执行本地转发,把本机 5900 转到麒麟的 127.0.0.1:5900,然后 VNC Viewer 连127.0.0.1:5900。这样麒麟的桌面共享可以只监听回环地址,外部扫描不到 5900。RDP 同理,但 Win7 作为服务端时,端口转发要落到 Win7 的 3389。这个方案不改变两端应用配置,只改变访问路径,适合对暴露面敏感的场景。

还要注意“认证”和“授权”是两件事。VNC 密码对了,只代表能连桌面共享;如果麒麟当前是锁屏状态,连上去可能只看到锁屏或黑屏,需要在麒麟本机先解锁。RDP 账户密码对了,也只代表能认证;Win7 账户如果是空密码,默认不允许网络登录,给账户设一个密码再试。把这两层分开,排查时就不会一直在密码框里打转。

3. Windows 连银河麒麟 V10:桌面共享、5900 端口与防火墙放行

3.1 麒麟 V10 桌面共享的开启与密码设置

银河麒麟 V10 一般在开始菜单里带“桌面共享”,没有的话到麒麟商店搜“桌面共享”安装。打开后只做三件事:勾选“允许其他人查看控制您的桌面”,设置一个连接密码,关闭窗口保存。这个密码是 VNC 连接密码,不是麒麟系统登录密码,也不是 Windows 账户密码,三者不要混。密码建议单独设一个,别和系统登录密码复用,后面排错时容易区分。

配置完成后,回到麒麟本机确认当前已经登录到图形桌面,并且没有停在登录界面。VNC 连的是已有会话,如果桌面共享服务随用户会话启动,而当前没人登录,服务可能没起来,或者起来了也没有可发的画面。常见做法是让麒麟保持登录状态并锁屏,锁屏后 VNC 连上去仍然需要解锁,但至少服务在。若必须无人值守,就要接受“锁屏后仍需输入系统密码”的边界,不要指望 VNC 密码能替代系统解锁。

图形配置的检查项可以按下面这张表过一遍,哪一项没做,后面都可能表现为“连不上”或“连上黑屏”:

检查项正确状态常见错误
桌面共享应用已安装并打开只在商店安装,没启动配置
允许查看控制已勾选并保存勾选后直接关窗口,没点保存
连接密码已设置,单独记录填成系统登录密码
麒麟桌面会话已登录图形桌面停在登录界面或无人登录
防火墙/安全中心放行 vncserver 或 5900只开共享,没放行入站

3.2 防火墙:安全中心自定义与 iptables 备份清理

麒麟 V10 的安全中心里,网络保护可以自定义配置。进入安全中心,找到网络保护的自定义配置,把 vncserver 勾上,保存后再从 Win7 侧试连。图形界面适合一次性配置,命令行适合确认规则有没有生效。下面这段先看监听和规则,再决定要不要动防火墙:

# 看桌面共享是否在监听,以及监听地址是不是 0.0.0.0 ss -lntp | grep -E ':5900|:5901' # 看 INPUT 链当前规则和默认策略 sudo iptables -L INPUT -n -v # 备份当前规则,出问题可回滚 sudo iptables-save > /tmp/iptables-before-vnc.bak

ss的输出里,如果进程名不是预期的桌面共享进程,可能是端口被别的服务占了。iptables -L INPUT -n -v重点看 Chain INPUT 的默认策略和现有 REJECT/DROP 规则,有些镜像的规则顺序是先拒绝后放行,追加到末尾的放行可能不生效,需要插到拒绝规则前面。备份文件放在/tmp下,重启会丢,长期保留可以放到用户目录。

如果只是实验环境临时打通,可以用sudo iptables -F清空规则验证是不是防火墙问题。命令执行前先确认这是实验机,执行后立刻用 Win7 连一次。连上了说明问题在防火墙,接下来要把清空改成精确放行;连不上就别继续在防火墙上绕,回到监听地址和桌面会话。血泪经验是:清空规则只能当诊断手段,不能当最终配置,否则下次重启或换网段又会翻车。

精确放行的命令和参数在第 2 章已经给过,这里补一个回滚动作。改完规则发现其他服务受影响,用备份恢复:

# 从备份恢复规则;执行前确认备份文件路径 sudo iptables-restore < /tmp/iptables-before-vnc.bak # 恢复后复查 sudo iptables -L INPUT -n -v

iptables-restore会按文件内容整体替换当前规则,执行前确认备份文件是这次改动前保存的。恢复后复查 INPUT 链,确认 5900 的放行规则是否还在,避免把刚调好的 VNC 也一起回滚掉。

3.3 VNC Viewer 新建连接:地址、端口、密码和记住密码

Win7 侧安装 VNC Viewer 时,先看安装包是否兼容 Win7。新版客户端可能不再支持老系统,直接拿最新版硬装,常见结果是安装失败或启动报缺库。资源包里附带的是这类场景常用的安装包,拿到后先在一台 Win7 上试装,能正常打开再批量铺。安装完成后打开 VNC Viewer,新建连接,地址填麒麟的 IP 加端口,例如192.168.1.20:5900,名称随便写一个能认出的,比如Kylin-V10-5900。

连接时输入的是麒麟桌面共享里设置的密码。为了省事可以勾选记住密码,但共用机器不建议勾,后面换密码会留下旧凭据。第一次连接如果画面模糊或卡顿,先把色彩深度调低、缩放设为适应窗口,再观察是不是网络延迟问题。VNC 对带宽敏感,桌面壁纸、动画、高分屏缩放都会增加帧数据,调这些比反复重装客户端有用。

VNC Viewer 的连接参数不用一次全开,按下面这张表选常用项即可:

参数建议值说明
地址IP:5900明确端口,避免客户端默认值不一致
名称自定义多台机器时便于区分
密码桌面共享密码不是麒麟系统登录密码
色彩深度中等或低带宽紧张时优先降
缩放适应窗口高分屏避免画面溢出
记住密码共用机不勾换密码后旧凭据会干扰

3.4 首次连接验证:本机自测、对端探测、失败看什么

第一次连不要直接让 Win7 上,先在麒麟本机确认端口在听。用ss -lntp | grep 5900看 Local Address,如果是127.0.0.1:5900,Win7 一定连不上,需要把桌面共享的监听地址改到对外网卡,或者用 SSH 端口转发把回环端口转出去。如果是0.0.0.0:5900或192.168.1.20:5900,再查防火墙。

Win7 侧没有nc时,可以用 telnet 客户端做 TCP 探测。Win7 默认可能没装 telnet 客户端,到“程序和功能”里打开“Telnet 客户端”再试:

:: 在 Win7 命令行探测麒麟 5900;出现空白窗口说明 TCP 通了 telnet 192.168.1.20 5900 :: 查看本机到麒麟的连通性和路由 ping 192.168.1.20 tracert 192.168.1.20

telnet IP 5900如果提示“无法打开到主机的连接”,说明 TCP 层没通,优先查防火墙、监听地址和端口号;如果窗口变成全黑或出现字符,说明端口通了,问题在 VNC 认证或桌面会话。ping只验证 ICMP,不能替代端口探测,很多环境禁 ping 但端口是开的,也有 ping 通但 5900 被挡的情况。排错顺序建议是:IP 通 → 端口通 → 密码对 → 桌面会话在 → 画面正常,一层层往下走,不要跳步。

4. 银河麒麟 V10 连 Windows:RDP 3389、账户认证与客户端参数

4.1 Win7 开启远程桌面:版本边界、服务与账户密码

Win7 要做 RDP 服务端,先看版本。专业版、旗舰版、企业版可以在“计算机属性 → 远程设置”里开启远程桌面;家庭普通版通常不支持被远程,硬开服务也可能认证失败。开启时选择“允许运行任意版本远程桌面的计算机连接”,如果只勾“仅允许运行使用网络级别身份验证的远程桌面计算机连接”,老客户端可能连不上。这个选项不是越严越好,要看麒麟侧桌面查看器支持的认证方式。

图形开启后,用命令行确认服务状态和端口监听。下面这段在 Win7 的 cmd 里执行:

:: 查看远程桌面是否被禁用,0 表示允许,1 表示禁用 reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections :: 启动远程桌面服务 net start TermService :: 确认 3389 是否在监听 netstat -ano | findstr :3389

fDenyTSConnections为 0 是允许远程,为 1 是禁用。net start TermService启动远程桌面服务,如果提示服务已启动,说明服务层没问题。netstat -ano | findstr :3389看到0.0.0.0:3389或[::]:3389才算监听;只看到127.0.0.1:3389外部连不进来。-a显示所有连接,-n数字端口,-o显示进程 ID,后面可以用任务管理器对 PID 确认是不是 svchost 里的 TermService。

账户必须有密码。Win7 空密码账户默认不允许网络登录,麒麟侧输入空密码会认证失败。给账户设一个密码,用户名格式用计算机名\用户名或用户名,域留空。如果 Win7 改了计算机名,用hostname确认,别凭记忆填。防火墙方面,开启远程桌面时系统一般会自动加入站规则,没加就手动补一条:

:: 放行 3389 入站 TCP;规则名可自定义 netsh advfirewall firewall add rule name="RDP-3389-In" dir=in action=allow protocol=TCP localport=3389 :: 查看规则是否生效 netsh advfirewall firewall show rule name="RDP-3389-In"

dir=in是入站,action=allow放行,protocol=TCP指定协议,localport=3389指定本地端口。show rule能看到启用状态和生效配置文件。如果 Win7 有多块网卡或网络位置不同,确认规则在“专用/公用”配置文件下都启用,否则换网段后规则不生效。注意:不要为了图省事直接关防火墙,关掉后 3389 暴露面更大,后面还要再开回来。

4.2 麒麟 V10 桌面查看器建 RDP 连接:协议、地址、凭据

银河麒麟 V10 侧如果没有桌面查看器,到麒麟商店搜“桌面查看器”安装。打开后新建连接,协议选 RDP,地址填 Win7 的 IP,端口默认 3389,改了端口就写IP:端口。用户名填 Win7 账户,域留空,密码填该账户密码。保存后双击连接。第一次连如果提示证书或身份验证,按内网环境确认后继续,不要在外网环境直接忽略。

连接参数里,分辨率建议先选“使用客户端分辨率”或固定一个比 Win7 屏幕小的值,避免远程会话把 Win7 桌面分辨率改得过大导致麒麟侧显示溢出。剪贴板默认开,方便复制命令;驱动器映射和音频重定向按需开,不开不影响桌面。多显示器如果麒麟侧只有一块屏,不要勾“使用所有显示器”,否则可能黑屏或只显示一部分。

麒麟桌面查看器的常用参数可以按下面这张表配:

参数建议值说明
协议RDP不要选 VNC,Win7 侧没开 VNC 服务
地址Win7_IP:3389改过端口必须写全
用户名计算机名\用户名域留空,避免认证域混淆
密码Win7 账户密码空密码账户先设密码
分辨率固定或跟随客户端避免远程改分辨率后画面溢出
剪贴板开复制命令方便
驱动器映射按需不用就不开,减少权限面

4.3 端口探测与认证失败分层:3389、NLA、空密码

麒麟侧连不上 Win7,先分是端口层还是认证层。端口层用nc探测,麒麟一般自带或可安装 netcat;没有nc可以用 bash 的/dev/tcp做超时探测:

# 探测 Win7 3389 是否可达,3 秒超时 nc -vz -w 3 192.168.1.10 3389 # 没有 nc 时的兜底探测 timeout 3 bash -c '</dev/tcp/192.168.1.10/3389' && echo "3389 open" || echo "3389 closed"

nc -vz的-v输出详细过程,-z只扫描不发送数据,-w 3设置 3 秒超时。/dev/tcp是 bash 内置的 TCP 连接方式,timeout 3防止卡死。端口不通就查 Win7 远程桌面是否开启、TermService 是否启动、防火墙是否放行、IP 是否填错。端口通了但认证失败,再查账户密码、用户名格式、NLA 选项和账户是否被锁定。

常见认证报错里,“由于网络级别身份验证”一类提示,通常是 Win7 远程设置只允许 NLA,而麒麟侧客户端不支持或协商失败。处理方式有两种:在 Win7 远程设置里取消“仅允许运行使用网络级别身份验证的远程桌面计算机连接”,或者换一个支持 NLA 的桌面查看器。前者降低认证强度,只建议内网临时用;后者要看麒麟商店里客户端的版本说明。不要为了连上把账户密码改成空,空密码会引入新的登录限制。

4.4 剪贴板、磁盘映射和多显示器:按需开,不要全开

RDP 的重定向能力比 VNC 强,但每一项都增加权限面。剪贴板映射方便复制命令和文本,建议开;驱动器映射会把麒麟本地目录暴露给 Win7 会话,不用就别开;音频重定向看场景,远程排错时开音频反而增加延迟;多显示器在麒麟单屏环境下不要勾。打印机重定向同理,内网办公需要再开,实验环境关掉。

我一般会先只开剪贴板,连上确认稳定后再逐项加。每加一项就断开重连一次,观察是否出现黑屏、输入法卡顿或剪贴板不同步。出现异常时,把最近加的那一项关掉,比一次性全开再猜快得多。RDP 会话断开时选择“注销”还是“断开连接”也要注意:断开连接会保留会话,下次连回去还在;注销会结束会话,未保存的工作会丢。麒麟侧客户端如果有“断开”和“注销”两个按钮,交付前跟使用人讲清楚区别。

5. 互相远程桌面连接的避坑排查:五类翻车现场

5.1 先按链路排查,不要先改密码

远程桌面连不上,最忌讳一上来就改密码、重装客户端、清空防火墙。正确顺序是按链路从下往上:物理网络和 IP → TCP 端口 → 服务进程 → 认证 → 桌面会话 → 显示参数。每一层都有可验证的输出,不要靠猜。下面这张表是我常用的排查顺序,左列是层级,右列是第一条命令或动作:

层级先做什么通过标准
网络/IPping对端能通,或至少知道禁 ping
TCP 端口ss/netstat/nc5900 或 3389 在监听且可达
服务进程看桌面共享/远程桌面服务进程在,服务已启动
认证用正确账户和密码不报凭据错误
桌面会话本机登录并解锁有可发画面
显示参数降色彩、调缩放画面正常,键鼠可用

这张表的价值在于定位“哪一层断了”。比如 Win7 连麒麟提示“connection refused”,大概率是端口层,不是密码层;提示“authentication failed”才是密码或认证层。麒麟连 Win7 提示“无法连接”,先看 3389 通不通;提示“凭据无效”,再查用户名格式和空密码。把报错原文对到层级上,比反复试密码省时间。

5.2 五类典型翻车记录:现象、原因、解决

第一类:Win7 能 ping 通麒麟,但 VNC Viewer 提示连接被拒绝。现象是 TCP 层直接失败,连密码框都不弹。原因通常是桌面共享没启动、只监听127.0.0.1、端口不是 5900,或者安全中心把 vncserver 拦了。解决是先上麒麟执行ss -lntp | grep -E ':5900|:5901',没有监听就打开桌面共享并保存;监听地址是回环就改对外监听或用 SSH 端口转发;端口是 5901 就在 VNC Viewer 地址里写IP:5901;最后到安全中心网络保护里勾选 vncserver。

第二类:VNC 密码正确,但连上去黑屏、只看到锁屏,或者键鼠没反应。现象是认证过了,画面不完整。原因常见有三个:麒麟当前停在登录界面或锁屏,桌面共享没有可发的已登录会话;连到了错误的显示号,比如实际服务在 5901;VNC 色彩深度或缩放参数不匹配。解决是先在麒麟本机登录并解锁,再连一次;用ss确认实际端口;在 VNC Viewer 里把色彩深度调低、缩放设为适应窗口,再断开重连。不要在这个时候反复改密码,密码错和黑屏是两回事。

第三类:麒麟连 Win7,3389 端口不通。现象是桌面查看器一直转圈或提示无法连接。原因可能是 Win7 是家庭普通版,不支持远程桌面服务端;或者远程桌面没开启、TermService 没启动、防火墙没放行 3389。解决是先确认 Win7 版本,家庭版换专业版/旗舰版/企业版;到“计算机属性 → 远程设置”开启远程桌面;在 cmd 里net start TermService并netstat -ano | findstr :3389确认监听;最后用netsh advfirewall补入站规则。不要只开图形开关不看服务状态。

第四类:麒麟连 Win7,端口通了但提示凭据无效或 NLA 失败。现象是能看到登录框或直接报认证错误。原因可能是账户空密码、用户名格式不对、域填了不该填的值,或者 Win7 只允许网络级别身份验证而客户端协商不上。解决是给 Win7 账户设密码,用户名用计算机名\用户名,域留空;在 Win7 远程设置里按内网安全要求调整 NLA 选项,或者换支持 NLA 的桌面查看器。空密码账户不要用来做远程桌面,这是最常见的“密码明明对”的假象。

第五类:sudo iptables -F之后短期能连,重启或换网段又断,甚至其他服务受影响。现象是当时通了,过一阵又不行。原因是清空规则不持久,重启后防火墙规则恢复;清空范围过大,把其他服务的放行也抹了;默认策略是 DROP 时清空也不通。解决是回到精确放行:只放行 5900/5901 或 3389,源地址限定对端 IP,用安全中心自定义配置或系统防火墙保存机制做持久化。清空规则只留作诊断,不要写进开机脚本。

5.3 日志与回滚:把 iptables 备份和远程桌面日志用起来

VNC 服务端进程名在不同镜像上可能不一样,常见是 vino-server 一类,也可能是厂商定制名。不要凭进程名猜,先用端口反查,再看 systemd 单元:

# 通过端口找进程,再确认服务名 sudo ss -lntp | grep ':5900' # 列出名称里带 vino/remote 的服务单元 systemctl list-units --type=service | grep -Ei 'vino|remote|vnc' # 看本次启动后与 VNC 相关的日志 sudo journalctl -b | grep -Ei 'vino|vnc|5900'

ss -lntp的-p需要 root 才能看到进程名,所以前面加sudo。systemctl list-units只列已加载单元,grep -Ei不区分大小写。journalctl -b看本次启动日志,grep缩小范围。如果日志里出现认证失败、绑定地址失败、显示号冲突,基本能定位到具体环节。Windows 侧则看“事件查看器 → Windows 日志 → 应用程序/系统”,远程桌面相关错误会记录 TermService 或 RemoteDesktopServices 的事件。

回滚习惯要有。改防火墙前保存iptables-save备份,改远程设置前记下原来的勾选状态,换客户端前保留旧客户端安装包。VNC 密码改过之后,Win7 侧如果勾了记住密码,旧凭据可能还在,删掉连接重建比反复输密码快。RDP 账户改密码后,麒麟桌面查看器里的保存凭据也要同步更新,否则会一直报认证失败。黑匣子不是越复杂越好,能把“改了什么、怎么回滚”写清楚,已经能少踩一半坑。

6. 进阶验证与加固:端口探测、日志定位和会话锁

6.1 双端验收脚本:连一次不算完,断开重连才算

交付前我一般会跑一个最小验收:从 Win7 探测麒麟 5900,从麒麟探测 Win7 3389,两边各登录一次,然后主动断开,再重连一次。下面这段放在麒麟侧执行,替换 IP 即可:

#!/usr/bin/env bash # 双端端口验收:替换成实际 IP 后执行 KYLIN_IP="192.168.1.20" WIN_IP="192.168.1.10" echo "== 麒麟 VNC 5900 ==" nc -vz -w 3 "$KYLIN_IP" 5900 echo "== Win7 RDP 3389 ==" nc -vz -w 3 "$WIN_IP" 3389

-w 3是超时,避免脚本卡住;两个nc都返回 succeeded 只说明端口通,不代表认证和桌面会话正常,所以还要人工登录一次。验收表可以按下面四项打勾:Win7 连麒麟能看到桌面并操作键鼠;麒麟连 Win7 能进桌面并打开一个程序;两端各自断开后能重连;重启一端后另一端仍能按原地址连上。四项都过,再谈交付。

验收项操作通过标准
端口双端nc探测5900/3389 均可达
认证输入各自密码不报凭据错误
桌面登录并操作画面和键鼠正常
重连断开后再连不依赖重启服务

6.2 会话锁与复测习惯

VNC 连麒麟时,会话锁要提前讲清楚:麒麟锁屏后,VNC 密码只能让你连到锁屏界面,系统解锁还要输麒麟账户密码。RDP 连 Win7 时,断开连接和注销的区别也要讲清楚,前者保留会话,后者结束会话。多人共用一台机器时,建议约定“用完锁屏不注销”或“用完注销”,不要两种混着来,否则下一个人连上去可能看到别人的桌面。

从那以后我每次交付这类双系统远程桌面,都强制走一遍“端口探测—双向登录—断开重连—重启复测”,不给自己留“当时能连”的后悔药。希望帮到你。

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

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进