TigerVNC 安装流程

本文来自 ChatGPT 问答,本人仅对文章的部分内容进行了删减、补充、调整。

0.前言

在 Linux 上安装远程桌面的方案很多,如:VNC、RDP、类向日葵的软件,但最通用的方案还是 VNC。VNC 的实现项目很多,其中 TigerVNC 在 GitHub 上的星星最多,于是我便选择它作为本次的实验对象。

以下便是由 ChatGPT 整理好的一套 在 Ubuntu Server 上安装 TigerVNC + XFCE 桌面环境 的标准流程:

目标架构

Windows 客户端
       |
       | VNC Viewer
       |
       ↓
Ubuntu Server
       |
       ├── TigerVNC Server
       |
       └── XFCE Desktop

适用于:

  • Ubuntu Server 22.04 / 24.04
  • 无 GUI 的纯服务器环境
  • 运维远程桌面场景

软件架构

/etc/tigervnc/
│
├── vncserver-config-defaults
│       |
│       └── 全局 XFCE 配置
│
└── vncserver.users
        |
        ├── :1=user1
        ├── :2=user2
        └── :3=user3


/home/user1/
└── .vnc/
        └── passwd
        └── config 用户 XFCE 配置


/home/user2/
└── .vnc/
        └── passwd
        └── config 用户 XFCE 配置

1. 更新软件源

sudo apt update

2. 安装 XFCE 桌面环境

Ubuntu Server 默认没有桌面,需要安装。

推荐 XFCE(轻量):

sudo apt install xfce4 xfce4-goodies -y

注:仅安装 xfce4 而不安装显示管理器的话,在本机上是无法正常登录的,因此我建议将 sudo apt install gdm3 也安装上。但如果没有本地登录的需求,仅仅只是远程登录的话,那是否还需要安装显示管理器?这个未实验,情况不明。【各种桌面环境项目的示例,可参考此文章。】

检查:

which startxfce4

正常:

/usr/bin/startxfce4

3. 安装 TigerVNC Server

Ubuntu 官方源:

sudo apt install tigervnc-standalone-server tigervnc-tools -y

确认版本:

vncserver --version

例如:

TigerVNC server version 1.13.1

4. 创建 VNC 用户密码

切换到你的普通用户:

例如:

su bot007

执行:

vncpasswd

输入密码。【注:这个密码是登录 vnc 时的独立密码,和用户登录 ssh 时的密码不是一回事。】

生成:

~/.vnc/passwd

检查:

ls -la ~/.vnc/

应该看到:

passwd

5. 配置“用户-窗口”映射

Ubuntu 新版 TigerVNC 使用:

/etc/tigervnc/vncserver.users

创建:

sudo vim /etc/tigervnc/vncserver.users

加入:

:1=bot007

含义:

显示编号 :1
        |
        用户 bot007

对应端口:

5900 + 1 = 5901

6. 配置全局默认参数

编辑:

sudo vim /etc/tigervnc/vncserver-config-defaults

Ubuntu 的 TigerVNC 1.13 通常使用 Perl 格式:

$session="xfce";        # 控制远程桌面时使用哪个桌面环境
$geometry="1920x1080";
$localhost="no";        # 控制 VNC 服务是否只能在本机开放
$alwaysshared="yes";    # 打开桌面会话共享功能,使得同一个账户的 VNC 画面可以被实时显示给不同的连接客户端。

注意:每行末尾必须有封号。


6. 配置用户默认参数【可选】

注:用户默认参数和全局默认参数是类似的,但用户的优先级要高于全局。

编辑:

vim ~/.vnc/config

加入:

localhost=no
geometry=1920x1080
session=xfce
alwaysshared

以上 ~/.vnc/config 的效果和 /etc/tigervnc/vncserver-config-defaults 的效果是一样的。

注:此外,如果还想控制远程桌面的会话被启动时,还可以一同去启动其它应用,那么可以自定义 xstartup 脚本,例如:

cat ~/.vnc/xstartup

#!/bin/bash

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS

#exec gnome-session
exec startxfce4
exec firefox

如果你想尝试 GNOME 桌面环境,则需要安装 sudo apt install ubuntu-desktop gnome-session gnome-shell -y,然后将上面注释的 gnome-session 那行取消注释即可,亦或者直接在 参数配置文件中进行指定。


7. 启动 systemd 服务

启动:

sudo systemctl enable tigervncserver@:1
sudo systemctl start tigervncserver@:1

查看:

sudo systemctl status tigervncserver@:1

正常:

Active: active (running)

8. 测试连接

查看:

vncserver -list

例如:

TigerVNC server sessions:

X DISPLAY #     RFB PORT
:1              5901

然后在 Windows 安装 TigerVNC Viewer 连接:

TigerVNC 官方客户端下载链接,其中 tigervnc-X.Y.Z.exe 是 VNC 客户端安装版,vncviewer-X.Y.Z.exe 是 VNC 客户端免装版,tigervnc-winvnc-X.Y.Z.exe 是 VNC 服务端的 Windows 安装包。

服务器IP:5901

例如:

192.168.1.100:5901

输入 VNC 密码。

正常应该进入:

XFCE Desktop

9. 新增用户

新增 VNC 用户,需要先在 Linux 系统中创建该用户,然后 su 切换到该用户的 shell 环境,然后按照步骤4、5、7 的动作即可。总的操作流程如下:

#(1)新增用户
sudo adduser test

#(2)切换到新用户的 shell 环境
su test

#(3)为新用户设置 vnc 登录密码
vncpasswd

#(4)为新用户分配 VNC 窗口
cat /etc/tigervnc/vncserver.users
:1=ubuntu
:2=test

#(5)启动专属于新用户的 VNC 桌面服务
sudo systemctl start tigervncserver@:2

#(6)VNC 客户端连接 ip:5902

10. 安全建议(生产环境)

由于 VNC 的登录只验证 VNC 密码,不需要经过 shell 环境的账户密码登录,因此只要 VNC 密码正确,登录者便可以直接进入到机器的桌面环境。这对于攻击者来说,通过密码爆破非常容易做到。因此在公网环境下,非常不推荐暴露 tcp/590X 端口,更推荐通过 SSH 建立本地隧道。然后通过 VNC 客户端去连接。具体做法就是:

VNC 服务器保持:

$localhost="yes";

VNC 客户端处先建立 ssh 隧道:

ssh -L 5901:localhost:5901 user@server-ip

然后再通过 VNC 客户端连接本地的隧道端口:

localhost:5901

如此一来,一样可以对 inux 发起远程桌面连接,而且在认证上还加了两道保险:(1)ssh 隧道的建立需要验证 Linux 系统的账户密码。(2)连接VNC 需要验证 VNC 密码。

posted @ 2026-07-28 15:19  扛枪的书生  阅读(0)  评论(0)    收藏  举报