虚拟网络计算(VNC)是一种图形桌面共享系统,允许您使用键盘和鼠标远程控制另一台计算机。它是 Microsoft 的开源替代品远程桌面 协议(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
, and 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 服务器时,上述命令都会自动执行。
The ~/.vnc/xstartup
文件还需要有执行权限。使用chmod 设置文件权限的命令:
chmod u+x ~/.vnc/xstartup
如果您需要通过其他选项 到 VNC 服务器,创建一个名为config
并每行添加一个选项。这是一个例子:
〜/.vnc/config
geometry=1920x1080
dpi=96
您现在可以使用以下命令启动 VNC 服务器vncserver
命令:
vncserver
New 'server2.linuxize.com:1 (linuxize)' desktop at :1 on machine server2.linuxize.com
Starting applications specified in /home/linuxize/.vnc/xstartup
Log file is /home/linuxize/.vnc/server2.linuxize.com:1.log
Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/linuxize/.vnc/passwd :1 to connect to the VNC server.
请注意:1
之后hostname 在上面的输出中。这表示 vnc 服务器运行的显示端口号。在此示例中,服务器在 TCP 端口上运行5901
(5900+1)。如果您使用以下命令创建第二个实例vncserver
它将在下一个自由端口上运行,即:2
,这意味着服务器正在端口上运行5902
(5900+2)。
重要的是要记住,在使用 VNC 服务器时,:X
是一个显示端口,指的是5900+X
.
您可以通过键入以下内容获取当前正在运行的所有 VNC 会话的列表:
vncserver -list
TigerVNC server sessions:
X DISPLAY # RFB PORT # PROCESS ID
:1 5901 5710
在继续下一步之前,请使用以下命令停止 VNC 实例vncserver
命令与-kill
选项和服务器编号作为参数。在此示例中,服务器在端口 5901 上运行(:1
),所以我们将停止它:
vncserver -kill :1
Killing Xtigervnc process ID 5710... success!
创建 Systemd 单元文件#
让我们创建一个 systemd 单元文件,以便您根据需要启动、停止和重新启动 VNC 服务,而不是手动启动 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 = linuxize
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
系统将提示您输入用户密码。
确保更换username
and server_ip_address
使用您的用户名和服务器的 IP 地址。
在 Windows 上设置 SSH 隧道#
如果您运行 Windows,则可以使用以下命令设置 SSH 隧道PuTTY SSH 客户端
.
打开 Putty 并在地址栏中输入您的服务器 IP 地址Host name or IP address
field.
在下面Connection
菜单、框、展开SSH
,然后选择Tunnels
。输入 VNC 服务器端口(5901
) 在里面Source Port
字段并输入server_ip_address:5901
in the Destination
字段并单击Add
按钮如下图所示:
返回到Session
页面保存设置,这样您就不需要每次都输入它们。对于远程服务器,选择保存的会话并单击Open
button.
使用 Vncviewer 连接#
现在 SSH 隧道已创建,是时候打开 Vncviewer 并连接到 VNC 服务器了localhost:5901
.
您可以使用任何 VNC 查看器,例如 TigerVNC、TightVNC、RealVNC、UltraVNC、Vinagre 和 VNC Viewer谷歌浏览器
.
我们将使用 TigerVNC。打开查看器,输入localhost:5901
,然后单击Connect
button.
Enter 你的用户 出现提示时输入密码,您应该会看到默认的 Xfce 桌面。它看起来像这样:
您可以使用键盘和鼠标从本地计算机开始与远程 XFCE 桌面交互。
结论#
我们向您展示了如何在 Ubuntu 20.04 上安装和配置 VNC 服务器并运行。
要将 VNC 服务器配置为为多个用户启动显示,请使用以下命令创建初始配置并设置密码:vncpasswd
命令。您还需要使用不同的端口创建新的服务文件。
如果您有任何疑问,请随时发表评论。