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

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

本教程介绍了在Ubuntu 18.04上安装和配置VNC服务器所需的步骤。
我们还将向我们展示如何通过SSH隧道安全地连接到VNC服务器。

虚拟网络计算(VNC)是一个图形桌面共享系统,可让我们使用键盘和鼠标来远程控制另一台计算机。
它是Microsoft远程桌面协议(RDP)的开源替代方案。

准备工作

在继续本教程之前,请确保我们以具有sudo特权的用户身份登录。

安装桌面环境

大多数服务器未安装桌面环境,因此我们将从安装轻量级桌面环境开始。

Ubuntu存储库中有几种可用的桌面环境(DE)。
我们将安装Xfce。

它是一种快速,稳定且轻巧的桌面环境,非常适合在远程服务器上使用。

输入以下命令以在服务器上安装Xfce:

sudo apt updatesudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

根据系统,下载和安装Xfce软件包可能需要一些时间。

安装VNC服务器

Ubuntu存储库中还有几种不同的VNC服务器,例如TightVNC,TigerVNC和x11vnc。

每个VNC服务器在速度和安全性方面都有各自的优缺点。

我们将安装TigerVNC。
这是一个主动维护的高性能VNC服务器。

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

sudo apt install tigervnc-standalone-server tigervnc-common

现在已经安装了VNC服务器,下一步是创建初始配置并设置密码。
运行“ vncserver”命令时不要使用sudo:

vncserver

系统将提示我们输入并确认密码,以及是否将其设置为只读密码。
如果选择设置仅查看密码,则用户将无法使用鼠标和键盘与VNC实例进行交互。

You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
/usr/bin/xauth:  file /home/theitroad/.Xauthority does not exist
New 'server2.theitroad.com:1 (theitroad)' desktop at :1 on machine server2.theitroad.com
Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/theitroad/.vnc/server2.theitroad.com:1.log
Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/theitroad/.vnc/passwd :1 to connect to the VNC server.

第一次运行“ vncserver”命令时,它将创建密码文件并将其存储在“~/.vnc”中。
如果不存在,将创建此目录。

注意上面输出中主机名后面的“:1”。

这表示正在运行vnc服务器的显示端口号。
在我们的例子中,服务器在TCP端口'5901'(5900 + 1)上运行。
如果我们使用'vncserver'创建第二个实例,它将在下一个空闲端口上运行,例如:':2',这意味着服务器在端口'5902'(5900 + 2)上运行。

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

在继续下一步之前,请使用带有'-kill'选项和服务器编号作为参数的'vncserver'命令停止VNC实例。
在此示例中,服务器在端口5901(':1')上运行,因此我们将使用以下命令将其停止:

vncserver -kill :1
Killing Xtigervnc process ID 7264... success!

配置VNC服务器

现在,服务器上同时安装了Xfce和TigerVNC,我们需要配置TigerVNC以使用Xfce。
为此,请创建以下文件:

~/.vnc/xstartup

nano ~/.vnc/xstartup
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4

保存并关闭文件。
每当我们启动或者重新启动TigerVNC服务器时,以上命令将自动执行。

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

chmod u+x ~/.vnc/xstartup

如果需要将其他选项传递给VNC服务器,请创建一个名为“ config”的文件,并在每行添加一个选项。

这是一个例子:

~/.vnc /配置

geometry=1920x1080
dpi=96

创建一个Systemd单位文件

创建一个systemd单位文件,以便我们可以根据需要启动,停止和重新启动VNC服务,该服务与其他任何systemd服务相同。

打开文本编辑器,然后将以下配置复制并粘贴到其中。
确保在第7行更改用户名以匹配用户名。

sudo nano /etc/systemd/system/[email protected]

/etc/systemd/system/[email protected]

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=simple
User=theitroad
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我们使用以下命令创建了一个新的单位文件:

sudo systemctl daemon-reload

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

sudo systemctl enable [email protected]

“ @”符号后的数字“ 1”定义将在其上运行VNC服务的显示端口。
这意味着VNC服务器将在端口“ 5901”上进行侦听,如上一节所述。

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

sudo systemctl start [email protected]

验证服务是否成功启动:

sudo systemctl status [email protected]
[email protected] - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/[email protected]; indirect; vendor preset: enabled)
   Active: active (running) since Thu 2016-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/[email protected]
           ‣ 9900 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1440x900 -alwaysshared -fg

连接到VNC服务器

VNC不是加密协议,可能会受到数据包嗅探的影响。
推荐的方法是创建SSH隧道,该隧道将安全地将流量从端口5901上的本地计算机转发到同一端口上的服务器。

在Linux和macOS上设置SSH隧道

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

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

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

不要忘记用用户名和服务器的IP地址替换“用户名”和“ server_ip_address”。

在Windows上设置SSH隧道

如果我们运行Windows,则可以使用PuTTY SSH客户端设置SSH隧道。

打开Putty,然后在“主机名或者IP地址”字段中输入服务器的IP地址。

在“连接”菜单下的方框中,展开“ SSH”,然后选择“隧道”。
在“源端口”字段中输入VNC服务器端口('5901'),在“目标”字段中输入“ server_ip_address:5901”,然后单击“添加”按钮,如下图所示:

返回“会话”页面以保存设置,这样我们无需每次都输入它们。
对于远程服务器,选择保存的会话,然后单击“打开”按钮。

使用Vncviewer连接

现在已经创建了SSH隧道,现在该打开Vncviewer并在'localhost:5901'连接到VNC服务器了。

我们可以将任何VNC查看器(例如TigerVNC,TightVNC,RealVNC,UltraVNC,Vinagre和VNC查看器)用于Google Chrome浏览器。

我们将使用TigerVNC。
打开查看器,输入“ localhost:5901”,然后单击“连接”按钮。

在出现提示时输入用户密码,我们应该会看到默认的Xfce桌面。

我们可以使用键盘和鼠标从本地计算机开始与远程XFCE桌面进行交互。