VNC 是什么
VNC 是一套跨平台的图形化远程控制方案:服务端按显示号监听 5900 起递增的端口(显示号 n 对应 5900+n),客户端用 RFB 协议接收画面并发送键盘鼠标事件。它的优点是实现简单、几乎能在任何系统上跑,代价是默认鉴权强度很弱——早期 VNC 口令被限制在 8 个字符以内。经典的安全做法是只监听回环地址,通过 SSH 端口转发访问。
基本信息
| 服务 | VNC Server(RFB 协议) |
|---|---|
| 协议 | TCP(显示号 n 对应 5900+n) |
| 常见实现 | TigerVNC、RealVNC、TightVNC、x11vnc |
| 相关端口 | 6080 noVNC Web 前端(经 websockify 转发) |
| 安全等级 | 仅运维网段,必须走 VPN 或 SSH 隧道 |
典型使用场景
- 图形界面运维:桌面版 Linux 服务器的远程操作与图形工具使用
- 开发与测试:在服务器上跑浏览器、IDE 等需要图形界面的工具
- 嵌入式与瘦客户端:树莓派等设备做远程桌面
- 临时支持:给远端同事演示界面操作,用后立即关闭会话
- 安全评估:盘点无加密、弱口令的远程桌面入口
SSH 隧道 + 连接
SSH 隧道 + 连接
ssh -L 5901:127.0.0.1:5901 user@server
vncviewer localhost:5901
# 服务端确认
ss -lntp | grep 5900
vncserver -list # 查看当前显示号与进程服务端常用操作与自检
服务端常用操作与自检
vncserver :1 -geometry 1600x900 -depth 24 -localhost yes
ss -lntp | grep -E '590[0-9]|6080' # 确认监听与绑定地址
tail -n 40 ~/.vnc/*.log # 黑屏与退出的排查起点
vncpasswd # 重设口令显示号与端口对照
| VNC 显示号 | 实际端口 | 说明 |
|---|---|---|
| :0 | 5900 | 本机物理显示,通常仅绑本机 |
| :1 | 5901 | 虚拟桌面 1,最常见的目标显示号 |
| :2 | 5902 | 虚拟桌面 2,可与 :1 并行 |
| 多用户 | 59xx | 同机多会话从 5900 起顺序分配 |
| noVNC | 6080 | Web 前端经 websockify 转回 RFB |
连接异常排查对照
| 现象 | 常见原因 | 处置方向 |
|---|---|---|
| 连接被拒 | 服务未启动或仅绑 127.0.0.1 | 对照 vncserver -list 与监听地址 |
| 能连但黑屏 | xstartup 无执行权限或桌面未配置 | chmod +x ~/.vnc/xstartup,看会话日志 |
| 认证反复失败 | 口令被截断或残留旧口令 | vncpasswd 重设后重建会话 |
| 画面卡顿 | 色深高、链路带宽小 | 降色深并匹配合适分辨率 |
公网上的 5900 扫描量极大:一旦口令弱会被直接接管桌面,桌面里往往已登录着浏览器、云控制台与 SSH 密钥,影响面远超一台主机。
加固清单
- 服务端只绑回环,访问一律经 SSH 或 VPN 隧道
- 口令独立设置且不复用系统账号口令,长度不要贴着上限
- 会话按需开启、用完即关,避免长期挂着空闲桌面
- 需要 Web 访问时在 noVNC 前叠加 HTTPS 与认证