文章目录

  • 1 准备工作
  • 2 安装ubuntu远程桌面
  • 2.1 Gnome安装
  • 2.2 xface安装
  • 3 安装VNC服务器
  • 4 配置VNC服务
  • 4.1 VNC密码设置
  • 4.2 启动脚本设置
  • 4.3 启动VNCSERVER
  • 4.4 查看开启的vncserver
  • 4.5 停止VNCserver
  • 5 Mobaxterm连接VNC服务
  • 参考



本文应用场景是有远程服务器上开发或本地及远程容器开发过程中需要可视化效果的,可以按照本文进行安装。比如深度学习开发,对图片和视频数据需要进行查看。


VNC代表虚拟网络计算。从本质上讲,它是一个远程显示系统,不仅允许您在当前运行的计算机上查看桌面环境,而且从Internet上的任何地方的不同体系结构的计算机中查看远端的“桌面”环境。

VNC Server是用于在Linux环境中执行VNC(虚拟网络计算)桌面的软件。不同于Windows操作系统,只需激活远程桌面;在Linux上,必须安装VNC Server才能实时远程桌面。VNC服务器有很多软件,这里讨论如何使用TigerVNC安装VNC服务器。关于tigervnc与其它工具的区别,不做区分。

1 准备工作

首先准备一个Ubuntu 服务器,可以是18.04或者是20.04,本文在这两种系统中都有进行测试并通过。该服务器它可以通过SSH远程或直接操作屏幕上的终端。下载软件需要有互联网连接。对于计算机上的VNC客户端,可以使用VNC Viewer应用程序,例如RealVNC,这个软件很小,几十M。这里我们使用moba xterm,这个软件是免费的,同时有ssh,vncserver功能,因为一直要用ssh,所以只用这一个软件也可以。

2 安装ubuntu远程桌面

本节提供两种桌面的安装第一种是gonme,每二种是xface4。相比而言xface更加轻量级,安装过程中gonme安装2.2G依赖,xface4安装0.9G依赖。对远程而言,使用xface4更合适。在测试过程中,远程服务器上这两种桌面是都可以正常使用的,但在容器中只有xface4可以正常使用,但gonme并不能每次都使用,有时只有黑屏。
另外要说明的是服务器上通常是通过命令行管理的,默认情况下未安装桌面环境。如果您运行桌面版本的Ubuntu,请跳过此步骤。当前Ubuntu 20.04存储库中提供了各种桌面环境,一种选择是安装Gnome,它是Ubuntu 中的默认桌面环境。另一个选择是安装Xfce。它是一种快速、稳定且轻巧的桌面环境,非常适合在远程服务器上使用。

2.1 Gnome安装

sudo apt-get update
sudo apt-get install ubuntu-gnome-desktop

安装过程中gdm3和lightgdm可以任选一个,只是显示风格的不同,我是选的gdm3.
启动gnome桌面服务,并确保它在启动时运行。

sudo systemctl start gdm
sudo systemctl enable gdm

2.2 xface安装

sudo apt-get update
sudo apt-get xfce4 xfce4-goodies

桌面的安装过程会花一段时间,特别是在容器中,耐心等待安成即可。另外这两个桌面是可以同时安装的,使用时进行选择,当然同时安装是没必要的。如果使用桌面版ubuntu系统直接使用gnome时无须安装,这样也简单一些。

3 安装VNC服务器

Ubuntu 存储库中有几种不同的VNC服务器,例如TightVNC、TigerVNC和x11vnc。每个VNC服务器在速度和安全性方面都有各自的优缺点。

我们将安装TigerVNC,这是一个主动维护的高性能VNC服务器,输入以下命令以安装软件包:

sudo apt-get install xserver-xorg-core

sudo apt-get install tigervnc-standalone-server tigervnc-xorg-extension tigervnc-viewer

sudo apt-get install gsfonts-x11 xfonts-base xfonts-75dpi xfonts-100dpi

4 配置VNC服务

4.1 VNC密码设置

这一步设置连接到VNC服务器时所使用的VNC密码。使用以下命令:

vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n

输入密码,然后确认。如果需要,您可以将密码设置为只读权限。如果不需要,可以按N键确认。
密码文件存储在~/.vnc目录中,如果不存在则创建该目录。

如果vncpasswd命令无效,请使用vncserver命令,输入密码,然后终止vncserver。

vncserver
vncserver -kill :*

4.2 启动脚本设置

接下来,我们将创建一个启动脚本作为初始配置,将在激活VNC服务器时执行。使用vim命令创建~/.vnc/xstartup文件。

vim ~/.vnc/xstartup

然后填写以下代码:

#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

vncconfig -iconic &

dbus-launch --exit-with-session gnome-session &
#dbus-launch --exit-with-session startxfce4 &

以上内容中有要加注释的话可以直接加#号,最后一行依据你所选用的桌面类型来进行配置。保存并退出后,给~/.vnc/xstartup文件添加可执行权限:

sudo chmod a+x ~/.vnc/xstartup

4.3 启动VNCSERVER

vncserver :1 -localhost no -geometry 1920x1080 -depth 24
# -localhost no是为了让其他计算机可以访问,而不仅仅是本地。没有这个option的话就只能本地VNC连接。从下面vnc监听状态可以看出,监听地址是0.0.0.0,而不是默认的127.0.0.1。
# vncserver -localhost no
# 不添加:1也可以,默认是1,可以手动选择

上述选项将创建一个会话,允许外部连接具有1920x950像素分辨率和清晰度24.
在Ubuntu操作系统上,分辨率可以用xrandr -q命令查看.容器中无法查看。
您可以根据自己的喜好配置分辨率和清晰度。
返回内容如下:

root@07265f50ffb2:~# vncserver :1 -localhost no -geometry 1920x950 -depth 24

New '07265f50ffb2:1 (root)' desktop at :1 on machine 07265f50ffb2

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/07265f50ffb2:1.log

Use xtigervncviewer -SecurityTypes VncAuth,TLSVnc -passwd /root/.vnc/passwd 07265f50ffb2:1 to connect to the VNC server.

在上面的输出中,请注意主机名后面的:1。这表示正在运行vnc服务器的显示端口号。在此示例中,服务器在TCP端口5901(5900+1)上运行。如果使用vncserver创建第二个实例,它将在下一个可用端口(即:2)上运行,这意味着服务器在端口5902(5900+2)上运行。

要记住的重要一点是,在使用VNC服务器时,:X是表示5900+X的显示端口。
有时会报错:

A VNC/X11 server is already running as :1 on machine 8ad402711f3d

需要进行如下操作:

rm -f /tmp/.X1-lock

 rm -f /tmp/.X11-unix/X1

4.4 查看开启的vncserver

可以通过输入以下命令获取所有当前正在运行的VNC会话的列表:

vncserver -list

返回内容:

服务器虚拟化与桌面虚拟化 服务器虚拟桌面系统_docker远程桌面

4.5 停止VNCserver

使用带有-kill选项和服务器编号作为参数的vncserver命令停止VNC实例:

vncserver -kill :1 #只杀死5901
vncserver -koll :* #合部杀死

显示为:

服务器虚拟化与桌面虚拟化 服务器虚拟桌面系统_tigervnc docker_02

5 Mobaxterm连接VNC服务

服务器虚拟化与桌面虚拟化 服务器虚拟桌面系统_docker远程桌面_03


服务器虚拟化与桌面虚拟化 服务器虚拟桌面系统_xface gnome_04


输入Ip和端口即可。容器要使用与主机映射的端口号如:

sudo docker run -itd --gpus all -p 8001:8001 -p 8002:5901 --restart always --privileged --ipc=host imagename:tag bash

如上命令启动的容器要使用端口8002,用户名是root.

测试效果为:

服务器虚拟化与桌面虚拟化 服务器虚拟桌面系统_xface gnome_05


上图为容器中ubuntu20.04 xface4界面

服务器虚拟化与桌面虚拟化 服务器虚拟桌面系统_xface gnome_06


上图为远程服务器ubuntu18.04中xface4界面。

服务器虚拟化与桌面虚拟化 服务器虚拟桌面系统_tigervnc docker_07


上图为gnome桌面。