VNC远程连接配置的核心在于服务器端与客户端两处的配置文件需要协同工作:服务器端通过配置文件或命令指定监听端口、认证方式和显示编号,客户端通过配置文件或连接参数指定目标IP、端口和加密选项,两边参数匹配后才能真正建立起稳定连接。
下面从服务器端和客户端两个维度,把配置文件的具体写法、常见场景和排查思路完整拆开讲。
VNC配置文件到底放在哪里
VNC的配置文件不是单一文件,它分散在系统不同目录中,职责不同,修改方式也不同。
服务器端配置文件的典型路径
- TigerVNC:配置文件在
/etc/tigervnc/目录下,用户级配置在~/.vnc/config,全局配置在/etc/tigervnc/vncserver-config-defaults。 - RealVNC:Linux版配置在
/etc/vnc/config.d/目录下,Windows版通过注册表存储,路径为HKEY_LOCAL_MACHINESOFTWARERealVNCvncserver。 - x11vnc:不依赖传统配置文件,直接在启动命令中带参数,但可以通过
-rfbauth指定密码文件。 - TightVNC:Windows版配置文件在安装目录下的
TightVNC.ini,Linux版沿用~/.vnc/config。
客户端配置文件的存放逻辑
主流VNC客户端(如TigerVNC Viewer、RealVNC Viewer)多数把连接配置存储在用户目录下。
- TigerVNC Viewer在Linux下会读取
~/.vnc/viewer.conf。 - RealVNC Viewer的配置文件在
~/.vnc/config.d/或注册表HKEY_CURRENT_USERSoftwareRealVNCvncviewer(Windows)。 - 移动端VNC客户端(如VNC Viewer for Android)通常把配置存在应用私有数据区,没法直接编辑文本,只能通过界面输入。
行业共识认为:Linux服务器上的VNC配置文件核心是
~/.vnc/config和/etc/tigervnc/vncserver-config-defaults,大多数连接异常都跟这两个文件的参数设置不当有关。
服务器端配置文件怎么写
场景决定写法,下面分三种常见部署方式说明。
systemd管理的有桌面环境服务器
编辑/etc/tigervnc/vncserver-config-defaults,添加以下参数:
# 使用哪个桌面环境 session=gnome # 分辨率和色深 geometry=1920x1080 depth=24 # 安全加密方式 securitytypes=VncAuth,TLSVnc # 禁止普通密码认证,改用PAM认证 # pam=true
然后创建用户级密码文件,首次启动时需要运行:
vncpasswd -u 用户名
输入两次密码后,会在~/.vnc/下生成passwd文件。
对于systemd方式,还需要编辑/etc/systemd/system/vncserver@.service文件(或使用发行版自带的模板),指定用户和显示编号:
[Service]
Type=forking
User=zhangsan
ExecStart=/usr/bin/vncserver :1 -config /etc/tigervnc/vncserver-config-defaults
ExecStop=/usr/bin/vncserver -kill :1
最后执行systemctl daemon-reload并启动服务:
systemctl enable vncserver@:1.service
systemctl start vncserver@:1.service
命令行手动启动的轻量场景
如果只是临时用,不必写systemd服务文件,直接在终端跑:
vncserver :3 -geometry 1600x900 -depth 24 -localhost no -rfbauth ~/.vnc/passwd
这行命令实际就是在”命令行层面”完成了配置:-localhost no允许远程连接,-rfbauth指向密码文件。
x11vnc直连场景
x11vnc不走VNC配置文件那一套,它直接附加到现有的X11显示上:
x11vnc -display :0 -rfbauth ~/.vnc/passwd -forever -shared -repeat -noxdamage
配置文件主要是-rfbauth指定的密码文件,如果想让x11vnc开机自启,可以把这行命令写进/etc/rc.local或对应的systemd服务里。
服务器端关键参数对照表
| 参数 | 作用 | 常见取值 |
|---|---|---|
| session | 指定桌面会话类型 | gnome, kde, xfce, mate |
| geometry | 远程桌面分辨率 | 1920×1080, 1280×720, 1024×768 |
| depth | 颜色深度 | 8, 16, 24, 32 |
| securitytypes | 安全认证方式 | VncAuth, TLSVnc, PLAIN |
| localhost | 是否仅监听本机 | yes / no |
| rfbauth | 密码文件路径 | ~/.vnc/passwd |
| display | 显示编号 | 1, :2, :3 |
客户端配置文件与连接参数怎么写
客户端配置的核心在于把服务器端的IP地址、端口号、显示编号和加密方式对齐。
Linux下TigerVNC客户端配置文件
编辑~/.vnc/viewer.conf按下面的格式组织:
# 默认连接的服务器地址 server=192.168.1.100:5901 # 连接时使用的桌面名称 desktop=zhangsan-desktop # 是否使用TLS加密 securitytypes=TLSVnc # 省略密码提示,直接从keychain读取(需要额外配置) # passwordFile=~/.vnc/passwd
手动连接时,命令行参数与配置文件效果等同:
vncviewer 192.168.1.100:5901 -SecurityTypes TLSVnc
Windows与macOS客户端配置要点
Windows版RealVNC Viewer和TigerVNC没有直接的文本配置文件可编辑,但连接信息会保存在注册表或用户配置目录中,实际操作中,多数用户通过界面录入:
- 地址栏输入
IP:端口,例如168.1.100:5901 - 高级选项里勾选加密方式
- 验证方式选择”VNC密码”
也可以把常用连接保存为.vnc文件(TigerVNC支持),这种文件本质上就是配置文件,内容类似:
[TigerVNC]
host=192.168.1.100
port=5901
securityTypes=TLSVnc
双击该文件即可直接唤起客户端连接,适合在局域网内vnc远程桌面设置场景中快速分发配置给同事。
客户端连接参数对应关系
| 界面选项 | 配置参数 | 含义 |
|---|---|---|
| 服务器地址 | host + port | 目标机器IP和端口 |
| 加密方式 | securityTypes | TLSVnc / VncAuth等 |
| 颜色级别 | quality | 画质与带宽权衡 |
| 缩放模式 | scaling | 自适应窗口缩放 |
端口、显示编号与防火墙三者如何对齐
这是配置文件最容易被忽略的一层,VNC端口不是随便填的,它由显示编号决定:
端口号 = 5900 + 显示编号
- 显示编号
1对应端口5901 - 显示编号
2对应端口5902 - 显示编号
3对应端口5903
服务器配置文件里指定的geometry和session决定了显示编号,客户端配置文件里的port必须跟这个编号映射一致。
防火墙规则也需要同步放行,用firewalld的话:
firewall-cmd --permanent --add-port=5901/tcp
firewall-cmd --reload
用ufw的话:
ufw allow 5901/tcp
很多用户配置完成后连接不上,排查顺序建议先看端口是否监听:
ss -tlnp | grep 5901 netstat -tlnp | grep 5901
有监听但连不上,再检查防火墙;没有监听,问题出在服务器端vnc服务没启动,需要回看配置文件语法。
密码文件权限与安全配置
密码文件权限错误是最常见的启动失败原因之一,VNC服务对密码文件权限有严格要求,必须是600(仅所有者可读写)。
修改方法:
chmod 600 ~/.vnc/passwd
生产环境下的安全加固建议
配置文件里可以加入以下安全参数:
# 仅允许TLS加密传输
securitytypes=TLSVnc
# 禁止普通VNC密码明文传输
plain=off
# 限制监听网段
localhost=no
对于跨公网的环境,不建议直接暴露5900端口,业内专家建议优先使用SSH隧道转发,客户端和服务器配置文件配合SSH配置完成连接,安全性会明显高于裸奔的VNC端口。
常见连接失败场景与配置排查方法
客户端能连上但黑屏
配置文件里session参数指定的桌面会话没有正确加载,或者对应桌面环境未安装,排查方式:
cat ~/.vnc/.log
日志里会明确提示session启动错误,多数情况下是写着gnome但系统只装了xfce,改成实际存在的桌面即可。
能连接但提示认证失败
客户端config里指定的加密方式与服务器端不匹配,服务器端用securitytypes=VncAuth,客户端就必须关闭TLS选项,或者选择对应的VncAuth。
局域网内能连,公网连不上
大多数情况是路由器的端口转发未配置或防火墙未放行,需要在路由器上把公网端口映射到内网机器的590x端口,并确认ISP没有封禁该端口。
常见问题解答
VNC配置文件修改后需要重启服务吗?
需要,修改服务器端配置文件后,必须重启VNC服务才能让新参数生效,systemd方式执行systemctl restart vncserver@:1.service,手动启动方式需要先vncserver -kill :1再重新启动,客户端配置修改后需要重新发起连接。
VNC和TeamViewer的配置文件有什么区别?
VNC使用标准的文本配置文件或注册表项,参数公开透明,完全本地控制,适合局域网内固定环境;TeamViewer没有传统意义上的公开配置文件,连接参数和授权信息由软件内部管理,依赖其中心服务器完成握手,配置方式更封闭但穿透性更好。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/721755.html





