在Ubuntu 22.04服务器上配置VNC服务

Linux VNC

This article was last updated on <span id="expire-date"></span> days ago, the information described in the article may be outdated.

今天想登陆进组里的Ubuntu服务器查看一下网络是如何配置的,因为之前是直接在图形界面设置的,但是现在服务器在机房懒得进去,就干脆研究了一下怎么设置VNC服务端,好远程连进去。

网上搜索了一大堆教程,全都是抄来抄去教你怎么配置xstartup文件,明明ArchWiki上就有相关的教程,简单设置一下就好了。

安装VNCServer

Ubuntu的仓库里vncserver的版本还是12.0,配合ArchWiki的设置还是会有很多问题,这里我们直接去下载官方预打包好的13.0的安装包。下载地址

目前打包好的安装包支持三个Ubuntu的版本。

image-20240513133223286

我下载的是ubuntu-22.04LTS/amd64/tigervncserver_1.13.1-1ubuntu1_amd64.deb

下载完成以后运行以下命令安装。

1
sudo dpkg -i tigervncserver_1.13.1-1ubuntu1_amd64.deb

配置VNCServer

接下来的配置步骤与ArchWiki中提到的步骤相同。

  1. 切换到想要用来登陆的用户,运行 vncpasswd 创建密码
  2. 编辑 /etc/tigervnc/vncserver.users 来定义用户映射,例如我想让用户ubuntu的会话运行在5901端口(5900+1),则定义的规则如下
1
:1=ubuntu
  1. 运行以下命令查看可用的会话类型
1
ls /usr/share/xsessions
image-20240513133833194
  1. 创建 ~/.vnc/config,定义如下
1
2
3
4
session=ubuntu-xorg		# 使用哪个会话,这里我使用ubuntu-xorg.desktop对应的会话,因此写为ubuntu-xorg
geometry=1920x1080 # 设置分辨率
localhost
alwaysshared
  1. 创建/usr/bin/vncsession-start,用来配合系统服务启动会话。因为Ubuntu的安装包里没有这个文件,所以我直接从Arch系统中复制了一份过来。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
USERSFILE="/etc/tigervnc/vncserver.users"

if [ $# -ne 1 ]; then
echo "Syntax:" >&2
echo " $0 <display>" >&2
exit 1
fi

if [ ! -f "${USERSFILE}" ]; then
echo "Users file ${USERSFILE} missing" >&2
exit 1
fi

DISPLAY="$1"

USER=`grep "^ *${DISPLAY}=" "${USERSFILE}" 2>/dev/null | head -1 | cut -d = -f 2- | sed 's/ *$//g'`

if [ -z "${USER}" ]; then
echo "No user configured for display ${DISPLAY}" >&2
exit 1
fi

# 这里vncsession的路径进行了修改,因为Ubuntu系统中该文件不在/usr/bin下。
exec "/usr/sbin/vncsession" "${USER}" "${DISPLAY}"
  1. 创建/etc/systemd/system/[email protected],用来运行系统服务。因为Ubuntu的安装包里没有service文件,所以我也直接从Arch系统中复制了一份过来。
1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target systemd-user-sessions.service

[Service]
Type=forking
ExecStart=/usr/bin/vncsession-start :%i
PIDFile=/run/vncsession-:%i.pid

[Install]
WantedBy=multi-user.target
  1. 最后启动服务,即可运行VNC服务了。
1
sudo systemctl start vncserver@1
vnc-viewer

Author: Syize

Permalink: https://blog.syize.cn/2024/05/13/ubuntu-22-04-tigervnc-server/

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Syizeのblog

Comments