TigerVNC 安装流程

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

0.前言

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

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

目标架构

text 复制代码
Windows 客户端
       |
       | VNC Viewer
       |
       ↓
Ubuntu Server
       |
       ├── TigerVNC Server
       |
       └── XFCE Desktop

适用于:

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

软件架构

text 复制代码
/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. 更新软件源

bash 复制代码
sudo apt update

2. 安装 XFCE 桌面环境

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

推荐 XFCE(轻量):

bash 复制代码
sudo apt install xfce4 xfce4-goodies -y

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

检查:

bash 复制代码
which startxfce4

正常:

text 复制代码
/usr/bin/startxfce4

3. 安装 TigerVNC Server

Ubuntu 官方源:

bash 复制代码
sudo apt install tigervnc-standalone-server tigervnc-tools -y

确认版本:

bash 复制代码
vncserver --version

例如:

text 复制代码
TigerVNC server version 1.13.1

4. 创建 VNC 用户密码

切换到你的普通用户:

例如:

bash 复制代码
su bot007

执行:

bash 复制代码
vncpasswd

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

生成:

bash 复制代码
~/.vnc/passwd

检查:

bash 复制代码
ls -la ~/.vnc/

应该看到:

text 复制代码
passwd

5. 配置"用户-窗口"映射

Ubuntu 新版 TigerVNC 使用:

text 复制代码
/etc/tigervnc/vncserver.users

创建:

bash 复制代码
sudo vim /etc/tigervnc/vncserver.users

加入:

ini 复制代码
:1=bot007

含义:

text 复制代码
显示编号 :1
        |
        用户 bot007

对应端口:

text 复制代码
5900 + 1 = 5901

6. 配置全局默认参数

编辑:

bash 复制代码
sudo vim /etc/tigervnc/vncserver-config-defaults

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

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

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


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

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

编辑:

bash 复制代码
vim ~/.vnc/config

加入:

perl 复制代码
localhost=no
geometry=1920x1080
session=xfce
alwaysshared

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

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

bash 复制代码
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 服务

启动:

bash 复制代码
sudo systemctl enable tigervncserver@:1
sudo systemctl start tigervncserver@:1

查看:

bash 复制代码
sudo systemctl status tigervncserver@:1

正常:

text 复制代码
Active: active (running)

8. 测试连接

查看:

bash 复制代码
vncserver -list

例如:

text 复制代码
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 安装包。

text 复制代码
服务器IP:5901

例如:

text 复制代码
192.168.1.100:5901

输入 VNC 密码。

正常应该进入:

text 复制代码
XFCE Desktop

9. 新增用户

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

bash 复制代码
#(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 服务器保持:

perl 复制代码
$localhost="yes";

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

bash 复制代码
ssh -L 5901:localhost:5901 user@server-ip

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

text 复制代码
localhost:5901

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

相关推荐
Mortalbreeze1 小时前
深入 Linux Socket 编程:端口号、网络字节序与 struct sockaddr 详解
linux·服务器·网络·c++
躺柒1 小时前
读半导体简史08大型机
linux·服务器·c语言·数据库·unix·ibm
井川廊咏2 小时前
【总集篇】Linux | 如何创建一个 home 目录在 /data 磁盘的 sudo 用户(补档)
linux·运维·服务器
Kina_C2 小时前
LVS负载均衡的十二种核心调度算法
linux·运维·算法·负载均衡·lvs
shencz20002 小时前
用bc脚本求解大质数
linux
AOwhisky2 小时前
Linux(CentOS)系统管理入门笔记(第十五期)——文件系统与存储管理(上篇):设备识别、挂载与文件查找
linux·运维·笔记·centos·文件系统
寒水馨2 小时前
Linux下载、安装 Bun v1.3.14(附安装包bun-linux-x64.zip)
linux·javascript·typescript·node.js·bun·运行时·包管理器
Dear~yxy4 小时前
LVS企业级实战
linux·服务器·lvs
兮动人4 小时前
Linux 安装 Claude Code 实战:Node.js、npm、GLM 配置一次跑通
linux·npm·node.js·cc·claude code