安装 Xfce 桌面环境

首先使用以下命令更新系统:

1
2
$ sudo apt update
$ sudo apt upgrade

Xfce 是轻量级的桌面,适合服务器安装。

1
$ sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

安装 VNC 服务器

键入以下命令以在 Ubuntu 服务器上安装 TigerVNC :

1
$ sudo apt install tigervnc-standalone-server tigervnc-common

配置 VNC 服务器

1
$ vim ~/.vnc/xstartup

写入以下内容:

1
2
3
4
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4

保存并关闭文件。无论何时启动或重启 TigerVNC 服务器,都将自动执行上述命令。

~/.vnc/xstartup 文件还需要具有执行权限。运行以下命令以确保权限正确:

1
$ chmod u+x ~/.vnc/xstartup

如果需要将附加选项传递给 VNC 服务器,则可以创建一个名为 config 的文件,并为每行添加一个选项。这是一个例子:

文件 ~/.vnc/config

1
2
geometry=1920x1084
dpi=96

创建 Systemd 单元文件

我们将创建一个 systemd 单元文件,使我们能够根据需要轻松启动,停止和重新启动 VNC 服务,与任何其他 systemd 服务相同。

打开文本编辑器,将以下配置复制并粘贴到其中。请务必更改第 7 行中的用户名以匹配您的用户名。

1
$ sudo vim /etc/systemd/system/vncserver@.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=simple
User=buzheng
PAMName=login
PIDFile=/home/%u/.vnc/%H%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver :%i -geometry 1440x900 -alwaysshared -fg
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

保存并关闭文件。

通知 systemd 我们创建了一个新的单元文件:

1
$ sudo systemctl daemon-reload

下一步是使用以下命令启用单元文件:

1
sudo systemctl enable vncserver@1.service

符号 1 后面的数字 @ 定义了运行 VNC 服务的显示端口。这意味着 VNC 服务器将侦听端口 5901 ,正如我们在上一节中讨论的那样。

执行以下命令启动 VNC 服务:

1
sudo systemctl start vncserver@1.service

验证服务是否已成功启动:

1
sudo systemctl status vncserver@1.service
1
2
3
4
5
6
7
8
● vncserver@1.service - Remote desktop service (VNC)
Loaded: loaded (/etc/systemd/system/vncserver@.service; indirect; vendor preset: enabled)
Active: active (running) since Thu 2018-08-16 19:05:54 UTC; 4s ago
Process: 9893 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
Main PID: 9900 (vncserver)
Tasks: 0 (limit: 507)
CGroup: /system.slice/system-vncserver.slice/vncserver@1.service
‣ 9900 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1440x900 -alwaysshared -fg

连接到 VNC 服务器

VNC 不是加密协议,可以进行数据包嗅探。建议的方法是创建一个 SSH 隧道,该隧道将安全地将来自本地计算机的端口 5901 上的流量转发到同一端口上的服务器。

在 Linux 和 macOS 上设置 SSH 隧道

如果在计算机上运行 Linux , macOS 或任何其他基于 Unix 的操作系统,则可以使用以下命令轻松创建 SSH 隧道:

1
ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address

系统将提示您输入用户密码。

不要忘了更换 username ,并 server_ip_address 与您的用户名和服务器的 IP 地址。

如何在 Ubuntu 18.04 上安装和配置 VNC