必须先确认VNC服务端是否已安装,再选择启用vino-server(仅限带GNOME/UKUI的桌面版)或部署TigerVNC(推荐服务器版及无桌面环境),并严格匹配架构、创建专用用户、配置xstartup脚本、放行对应5900+N端口。

要在麒麟OS终端中开启VNC远程桌面,必须绕过图形界面直接配置底层服务,适用于无GUI环境、批量部署或SSH远程维护场景。若当前系统未安装VNC服务端,仅执行gsettings命令会报错退出,且vino-server在Kylin V10 SP3及之后版本中已默认禁用,需确认服务存在性再操作。
确认系统是否已安装VNC服务端
执行rpm -aq | grep -E 'tiger|vino|xrdp',查看输出中是否含tigervnc-server、vino或xrdp相关包名。若为空,则需先安装——银河麒麟V10基于openEuler/RHEL生态,【必须使用yum而非apt】;若系统为ARM架构(如飞腾FT-2000),则需匹配arm64源中的tigervnc-server包,x86_64机器误装arm64包会导致service启动失败。
方法一:启用GNOME原生vino-server(仅限带GNOME桌面的桌面版)
此方法仅适用于Kylin Desktop版且运行GNOME或UKUI(UKUI兼容GNOME设置后端)的系统,服务器版默认不带该组件。
以root身份执行:gsettings set org.gnome.vino enabled true
设置密码时必须用base64编码,明文密码会被拒绝:gsettings set org.gnome.vino vnc-password '$(echo -n "MyVNC2026!" | base64)'
关闭加密强制要求,否则Windows TightVNC等主流客户端无法连接:gsettings set org.gnome.vino require-encryption false
手动启动服务:/usr/lib/vino/vino-server &,注意末尾的&不可省略,否则终端将被进程占用。启动后立即执行ps -ef | grep vino验证,若无输出说明服务未运行,常见原因是dbus未就绪或用户会话未激活。
方法二:部署TigerVNC服务(推荐用于服务器版及无桌面环境)
第一步:创建专用VNC用户,禁止root直接运行
sudo useradd -m -s /bin/bash vncuser → sudo passwd vncuser
第二步:切换至该用户并生成VNC密码文件
su - vncuser → vncpasswd
输入密码两次(长度≤8位,但必须含大小写字母+数字+符号),系统会自动创建~/.vnc/passwd,权限为600,【切勿用root执行vncpasswd,否则生成的密码文件归属root,vncserver启动时因权限不足而静默失败】
第三步:编写启动脚本~/.vnc/xstartup
vi ~/.vnc/xstartup,写入以下内容(UKUI桌面用户请将startxfce4替换为ukui-session):
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec ukui-session &
第四步:赋予执行权限并测试启动
chmod +x ~/.vnc/xstartup → vncserver :1 -geometry 1024x768 -depth 24
若返回“New 'localhost:1 (vncuser)' desktop is localhost:1”,说明服务已就绪;若报错“Could not find a valid display”,检查xstartup是否可执行、是否漏掉#!/bin/sh头行。
第五步:配置systemd服务实现开机自启
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
编辑该文件,将
systemctl daemon-reload → systemctl enable vncserver@:1.service → systemctl start vncserver@:1.service
放行防火墙端口
银河麒麟V10默认使用firewalld,VNC默认监听5900+N端口(:1对应5901):
firewall-cmd --permanent --add-port=5901/tcp → firewall-cmd --reload
验证端口状态:ss -tuln | grep :5901,看到LISTEN即表示服务已在监听。若使用TigerVNC且配置了多个显示号(如:2),需同步放行5902端口。

















