TightVNC 和 TigerVNC 都是 VNC 协议的优秀实现。TightVNC 服务端轻量且兼容性好,适合在服务器或资源有限的设备上部署;而 TigerVNC 客户端(tigervnc-viewer)响应迅速、连接稳定,是目前 Linux 下体验最好的 VNC 客户端之一。

下面是一份在 Ubuntu/Debian 系统上的完整教程,涵盖从服务端搭建到客户端连接的每一步。

博主博客

第一部分:服务端安装与配置 (tightvncserver)

假设你需要在远程 Linux 主机上开启 VNC 服务。

1. 安装 tightvncserver

打开终端,更新软件包列表并安装服务端程序:

sudo apt update
sudo apt install tightvncserver

2. 设置 VNC 密码

首次运行前,需要先设置连接密码。执行以下命令并按提示操作(密码最长 8 位):

vncpasswd

系统会提示输入并确认密码,并询问是否设置一个仅查看的密码(选 n 即可)。

3. 启动 VNC 服务

启动一个虚拟桌面会话。:1 代表显示编号,对应端口 5901(5900 + 显示编号)。

vncserver :1 -geometry 1920x1080 -depth 24
  • -geometry:指定分辨率,可根据需要调整。
  • -depth:指定色彩深度,24 为真彩色。

4. 配置桌面环境 (解决黑屏问题)

如果启动后客户端连接看到的是灰屏或黑屏,通常是因为默认的 xstartup 配置文件没有启动图形界面。我们需要修改该文件,让它启动你喜欢的桌面环境(如 xfce4 或默认的 gnome)。

首先,停止刚才启动的服务:

vncserver -kill :1

编辑配置文件 ~/.vnc/xstartup

nano ~/.vnc/xstartup

将文件内容替换为以下示例(以启动轻量的 xfce4 为例,安装 xfce4 需执行 sudo apt install xfce4):

#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

如果使用 Ubuntu 默认的 GNOME,可以改为:

#!/bin/bash
export XKL_XMODMAP_DISABLE=1
export XDG_CURRENT_DESKTOP="GNOME-Flashback:Unity"
export XDG_MENU_PREFIX="gnome-flashback-"
unset DBUS_SESSION_BUS_ADDRESS
gnome-session --session=gnome-flashback-metacity --disable-acceleration-check &

保存文件后,赋予执行权限:

chmod +x ~/.vnc/xstartup

重新启动 VNC 服务:

vncserver :1 -geometry 1920x1080

第二部分:客户端安装与连接 (tigervnc-viewer)

现在,在你用来控制远程电脑的本机电脑上安装客户端。

1. 安装 tigervnc-viewer

在 Ubuntu/Debian 下,执行以下命令安装客户端:

sudo apt update
sudo apt install tigervnc-viewer

注:在 Windows 或 macOS 下,可以去官网下载 RealVNC Viewer 或 TigerVNC 的二进制版本。

2. 发起远程连接

方式一:终端命令
打开终端,输入以下命令连接:

vncviewer 192.168.1.100:1

这里 192.168.1.100 替换为你的服务器 IP,:1 对应端口 5901。

方式二:图形界面
在应用菜单中找到 “TigerVNC Viewer”,在弹出的地址栏中输入 服务器IP:5901服务器IP:1,点击连接,输入之前设置的密码即可。

第三部分:进阶配置与优化

1. 设置开机自启

如果希望服务器重启后 VNC 自动启动,可以创建 systemd 服务。

创建服务文件:

sudo nano /etc/systemd/system/[email protected]

粘贴以下内容(注意将 <USER> 替换为你的用户名):

[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=<USER>
Group=<USER>
WorkingDirectory=/home/<USER>

PIDFile=/home/<USER>/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver :%i -geometry 1920x1080 -depth 24
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

重载配置并启用服务:

sudo systemctl daemon-reload
sudo systemctl enable [email protected]
sudo systemctl start [email protected]

2. 安全加固:通过 SSH 隧道连接

直接暴露 VNC 端口(5901)存在安全隐患。推荐使用 SSH 隧道加密连接。

在你本地的电脑终端执行(无需单独运行 vncviewer 命令):

ssh -L 5901:localhost:5901 username@your_server_ip

保持这个 SSH 连接窗口打开。

打开另一个终端或 VNC 客户端,连接地址输入 localhost:1。此时流量已通过 SSH 加密转发。

3. 防火墙配置

如果连接不上,检查服务器防火墙是否放行了相应端口:

sudo ufw allow 5901/tcp

4. 管理 VNC 会话

  • 查看当前运行中的会话vncserver -list
  • 终止指定会话vncserver -kill :1

常见问题排查

  • 黑屏:通常是 ~/.vnc/xstartup 配置不正确或未安装桌面环境,请参考步骤 4 修正。
  • 连接拒绝:确认服务已启动,防火墙已放行,且端口映射正确。
  • 密码错误:使用 vncpasswd 重新设置密码。