帮助中心
如何在Ubuntu 20.04上安装和配置VNC



虚拟网络计算(VNC)是一个图形化的桌面共享系统,允许你使用你的键盘和鼠标来远程控制另一台计算机。它是微软远程桌面协议(RDP)的一个开源替代品。

本文解释了如何在Ubuntu 20.04上安装和配置一个VNC服务器。我们还将告诉你如何通过SSH隧道安全地连接到VNC服务器。

安装桌面环境


Ubuntu服务器是通过命令行管理的,默认情况下没有安装桌面环境。如果你运行的是桌面版的Ubuntu,请跳过这一步。

在Ubuntu软件库中有各种桌面环境。一个选择是安装Gnome,这是Ubuntu 20.04的默认桌面环境。另一个选择是安装Xfce 。它是一个快速、稳定和轻量级的桌面环境,这使得它非常适合在远程服务器上使用。

在本指南中,我们将安装Xfce。以具有sudo权限的用户身份输入以下命令。

$ sudo apt update$ sudo apt install xfce4 xfce4-goodies

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

安装VNC服务器


在Ubuntu软件仓库中有几个不同的VNC服务器,如TightVNC , TigerVNC , 和x11vnc。每个VNC服务器在速度和安全方面都有不同的优势和劣势。

我们将安装TigerVNC。它是一个积极维护的高性能VNC服务器。键入以下命令来安装该软件包。

$ sudo apt install tigervnc-standalone-server


配置VNC访问


一旦VNC服务器安装完毕,下一步就是创建初始用户配置并设置密码。

使用vncpasswd命令设置用户密码。运行下面的命令时不要使用sudo。

$ vncpasswd

系统会提示你输入并确认密码,以及是否将其设置为仅可查看的密码。如果你选择设置一个只允许查看的密码,用户将不能用鼠标和键盘与VNC实例交互。

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

密码文件存储在~/.vnc目录下,如果不存在,就会创建。


接下来,我们需要将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/config
geometry=1920x1080
dpi=96

现在你可以使用vncserver命令启动VNC服务器。

$ vncserver
New 'server2.febhost.com:1 (febhost)' desktop at :1 on machine server2.febhost.com

Starting applications specified in /home/febhost/.vnc/xstartup
Log file is /home/febhost/.vnc/server2.febhost.com:1.log

Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/febhost/.vnc/passwd :1 to connect to the VNC server.

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

需要记住的是,在使用VNC服务器时, :X是一个显示端口,指的是5900+X。

你可以通过输入以下内容获得当前所有正在运行的VNC会话的列表。

$ vncserver -list

TigerVNC服务器会话。

TigerVNC server sessions:

X DISPLAY #	RFB PORT #	PROCESS ID
:1		      5901		    5710

在继续下一步之前,使用vncserver命令停止VNC实例,该命令带有-kill选项,并将服务器号作为参数。在这个例子中,服务器运行在5901端口(:1),所以我们要停止它。

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


创建一个systemd单元文件


与其手动启动VNC会话,不如创建一个systemd单元文件,这样就可以根据需要启动、停止和重启VNC服务。

打开你的文本编辑器,复制并粘贴以下配置。请确保将第7行的用户名改为你的用户名。

$ sudo nano /etc/systemd/system/vncserver@.service
/etc/systemd/system/vncserver@.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=simple
User=febhost
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 vncserver@1.service

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

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

$ sudo systemctl start vncserver@1.service

用以下命令验证服务是否成功启动。

$ sudo systemctl status vncserver@1.service
● vncserver@1.service - Remote desktop service (VNC)
     Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-03-26 20:00:59 UTC; 3s ago
...


连接到VNC服务器


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

在Linux和macOS上设置SSH隧道


如果你的机器上运行Linux、macOS或任何其他基于Unix的操作系统,你可以用下面的命令轻松创建一个SSH隧道。

$ ssh -L 5901:127.0.0.1:5901 -N -f -l vagrant 192.168.33.10

你会被提示输入用户密码。

确保将用户名和server_ip_address替换为你的用户名和你的服务器的IP地址。

在Windows上设置SSH隧道


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

打开Putty或xshell,在主机名或IP地址栏中输入你的服务器IP地址。



在连接菜单下的方框内,展开SSH,并选择隧道。在源端口领域输入VNC服务器端口(5901),在目的地领域输入server_ip_address:5901,然后点击添加按钮,如下图所示。



回到会话页面,保存设置,这样你就不需要每次都输入。到远程服务器,选择已保存的会话并点击打开按钮。

使用Vncviewer进行连接


现在SSH隧道已经创建,现在是时候打开你的Vncviewer,并连接到本地主机:5901的VNC服务器。

你可以使用任何VNC浏览器,如TigerVNC、TightVNC、RealVNC、UltraVNC、Vinagre和VNC Viewer for Google Chrome。

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



在提示时输入你的用户密码,你应该看到默认的Xfce桌面。它看起来会像这样。



你可以在本地机器上使用键盘和鼠标开始与远程XFCE桌面进行交互。

总结


我们已经向你展示了如何在Ubuntu 20.04上安装和配置VNC服务器并运行。

要配置你的VNC服务器为一个以上的用户启动显示,请使用vncpasswd命令创建初始配置并设置密码。你还需要使用不同的端口创建一个新的服务文件。

文章相关标签: vnc安装
购物车