在Ubuntu 20.04上安装和配置VNC

时间:2020-03-05 15:27:50  来源:igfitidea点击:

VNC代表虚拟网络计算。
它有助于我们远程控制Ubuntu机器。
VNC Server使用远程帧缓冲区协议(RFB)来远程控制另一台计算机。

当技术支持人员使用键盘或者鼠标时,VNC将从键盘和鼠标传输到远程服务器的信号。
它使管理工作更加简单,方便,具有图形用户界面。
此外,VNC比图形SSH和RDP连接更可靠。

本教程将使用COILDVNC在Ubuntu 20.04上设置和配置VNC的步骤。
如果我们在以前版本的Ubuntu 16.04上运行VNC,则有一个教程。

安装桌面环境和VNC服务器

首先,让我们在Ubuntu服务器上安装桌面环境,因为它默认未安装它。

有很多选择:GNOME,MATE,XFCE等。

在本教程中,我们将选择XFCE。
它是一个轻量级的桌面环境,它帮助VNC连接将稳定和光滑。

在Ubuntu服务器上,运行以下命令以更新包列表:

$sudo apt update

然后,让我们安装XFCE桌面环境:

$sudo apt install xfce4 xfce4-goodies gnome-icon-theme

其中我正在使用RickVNC服务器,其他流行的VNC服务器是Tigervnc和x11vnc。

安装RuceVNC:

$sudo apt install tightvncserver

接下来,让我们运行VNC服务器实例,并且必须为已安装的服务器设置密码:

$vncserver

正如我们在安装后第一次启动服务器,它会要求我们设置客户端用于连接的密码。
它还将要求设置仅查看的密码,这将允许用户看到屏幕但不与它交互。

启动vncserver

注意到密码长度在6到8个字符之间。
如果输入更长的密码,它将自动修剪。

如果要更改VNC服务器的密码,请让我们运行:

$vncpasswd

配置VNC服务器

当我们第一次启动VNC服务器实例时,将创建初始配置文件:'~/.vnc/xstartup'和vnc服务器在端口5901上侦听。
我们将此端口称为显示端口。
我们可以推出许多VNC服务器的实例,每个实例都有自己的显示端口:第一个显示器在端口5901上侦听,第二个显示器在端口5902上侦听。

必须配置VNC服务器以与Ubuntu Server启动一起运行。
此外,我们必须明确指出VNC服务器将连接到的桌面环境。

首先,让我们停止在TCP端口5901上运行的当前VNC服务器实例:

$vncserver -kill :1

然后备份当前配置文件:

$cp ~/.vnc/xstartup ~/.vnc/xstartup.bak

现在,使用我们喜欢的编辑器修改"Xstartup"文件,如下所示:

#!/bin/sh
xrdb $HOME/.Xresources
startxfce4 &

重新启动VNC服务器:

$vncserver -localhost

vncserver -localhost.

连接到VNC服务器

默认情况下,VNC服务器不使用安全协议。
为了确保与远程Ubuntu服务器的连接,我们必须创建一个SSH隧道,并指示VNC客户端通过该隧道连接到VNC服务器。

让我们在本地计算机上建立一个SSH连接,将流量转发给VNC的"localhost"。

在本地计算机(MacOS或者Linux)上启动终端,运行以下命令:

$ssh -L 59000:localhost:5901 -C -l <user> <server_ip_address>

其中:

-l 59000:localhost:5901:本地计算机上的端口为59000将转发到目标服务器:localhost:5901

-c:压缩数据以加快连接

-l <user> <server_ip_address>:指示我们将登录的用户以及Ubuntu 20.04服务器的IP地址

在Windows上设置SSH隧道

如果运行Windows操作系统,我们可以使用Putty SSH客户端设置SSH隧道。

让我们打开Putty然后输入Ubuntu Server的IP地址:

在putty 上输入Ubuntu Server的IP地址

接下来,展开子菜单连接> SSH>隧道,在"源端口"和"目标"中的"源端口"和"<server_ip_address>:5901"中输入'5901'。
然后,单击以下"添加"按钮:

SSH隧道在putty 上

通过使用SSH隧道,与Ubuntu 20.04服务器的VNC连接仅允许将可以SSH的计算机发送到服务器。
它不允许每台计算机连接到端口5901.

现在,我们可以使用VNC客户端连接到远程Ubuntu服务器。
在本教程中,我们使用VNC查看器。
打开VNC客户端,然后输入服务器IP地址和端口5901:

输入Ubuntu Server IP地址和端口5901

我们已成功连接到Ubuntu Server的XFCE桌面:

VNC查看器

我们可以控制服务器,就像我们正在使用Office中的物理服务器一样。
例如,我们可以访问文件管理器,启动程序或者打开终端:

控制Ubuntu服务器

将VNC服务器设置为SystemD服务

通过将VNC服务器运行为系统服务,我们可以随时轻松启动,停止或者重新启动它。

让我们在Ubuntu Server上的目录'/etc/systemd/system /'中创建一个名为'vncserver @service'的新文件:

$sudo vim /etc/systemd/system/[email protected]

将以下内容添加到文件'vncserver @ .service'中,并确保编辑第7行,8,9和13中的值匹配环境。

vncserver @ .service.

[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=ubuntu
Group=ubuntu
WorkingDirectory=/home/ubuntu
PIDFile=/home/ubuntu/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target

然后,重新加载系统守护程序:

$sudo systemctl daemon-reload

启用服务:

$sudo systemctl enable [email protected]

其中:

@ 1.Service:第一个显示器与端口5901关联。

输出:

Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /etc/systemd/system/[email protected].

杀死实例运行:

$vncserver -kill :1
Killing Xtightvnc process ID 3159

然后再次启动系统服务:

$sudo systemctl start vncserver@1

现在,我们可以验证服务是否正确运行:

$sudo systemctl status vncserver@1

输出:

[email protected] - Start TightVNC server at startup
     Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2017-08-16 17:37:51 UTC; 2min 2s ago
    Process: 4611 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2)
    Process: 4615 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :1 (code=exited, status>
   Main PID: 4623 (Xtightvnc)
      Tasks: 129 (limit: 7125)
     Memory: 187.5M
...