在本教程中,我们将引导您完成在 CentOS 7 系统上安装和配置 VNC 服务器的步骤。我们还将向您展示如何通过 SSH 隧道安全地连接到 VNC 服务器。
虚拟网络计算(VNC)是一种图形桌面共享系统,允许您使用键盘和鼠标远程控制另一台计算机。
先决条件#
在继续本教程之前,请确保您以以下身份登录具有 sudo 权限的用户 。我们假设您以名为的用户身份登录linuxize
.
安装Xfce桌面环境#
CentOS 服务器安装通常不附带安装桌面环境,因此我们将从安装一个轻量级桌面环境开始。
我们将安装Xfce 。它快速、稳定且占用系统资源少,非常适合在远程服务器上使用。
Xfce 软件包可在EPEL 存储库 。如果您的服务器上未启用存储库,您可以通过键入以下内容来启用它:
sudo yum install epel-release
添加存储库后,使用以下命令在 CentOS 上安装 Xfce:
sudo yum groupinstall xfce
根据您的系统,下载和安装 Xfce 软件包和依赖项可能需要一些时间。
安装VNC服务器#
我们将使用 TigerVNC 作为我们选择的 VNC 服务器。TigerVNC 是一个积极维护的高性能开源 VNC 服务器。
键入以下命令在 CentOS 服务器上安装 TigerVNC:
sudo yum install tigervnc-server
现在 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/linuxize/.Xauthority does not exist
New 'server2.linuxize.com:1 (linuxize)' desktop at :1 on machine server2.linuxize.com
Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/linuxize/.vnc/server2.linuxize.com:1.log
第一次vncserver
命令运行后,它将创建密码文件并将其存储在~/.vnc
如果不存在则将创建的目录。
请注意:1
之后hostname 在上面的输出中。这表示 vnc 服务器运行的显示端口号。在我们的例子中,服务器在 TCP 端口上运行5901
(5900+1)。如果您使用以下命令创建第二个实例vncserver
它将在下一个自由端口上运行,即:2
,这意味着服务器正在端口上运行5902
(5900+2)。
重要的是要记住,在使用 VNC 服务器时,:X
是一个显示端口,指的是5900+X
.
在继续下一步之前,首先使用以下命令停止 VNC 实例vncserver
命令与-kill
选项和服务器编号作为参数。在本例中,服务器在端口 5901 上运行(:1
),所以我们将停止它:
vncserver -kill :1
Killing Xvnc process ID 2432
配置VNC服务器#
现在 Xfce 和 TigerVNC 都已安装在服务器上,下一步是配置 TigerVNC 以使用 Xfce。为此,请打开以下文件:
nano ~/.vnc/xstartup
并将最后一行更改为exec /etc/X11/xinit/xinitrc
to exec startxfce4
:
〜/.vnc/xstartup
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
保存并关闭文件。每当您启动或重新启动 TigerVNC 服务器时,上面的脚本都会自动执行。
如果您需要通过其他选项 到VNC服务器,打开~/.vnc/config
文件并每行添加一个选项。文件中列出了最常见的选项。取消注释并根据您的喜好进行修改。
这是一个例子:
〜/.vnc/config
# securitytypes=vncauth,tlsvnc
# desktop=sandbox
geometry = 1920x1080
# localhost
# alwaysshared
dpi = 96
创建 Systemd 单元文件#
我们将创建一个 systemd 单元文件,使我们能够根据需要轻松启动、停止和重新启动 VNC 服务,就像任何其他 systemd 服务一样。
使用以下命令复制 vncserver 单元文件cp 命令:
sudo cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
使用文本编辑器打开文件,编辑以黄色突出显示的行并将“linuxize”替换为您的实际用户名:
sudo nano /etc/systemd/system/vncserver@\:1.service
/etc/systemd/system/vncserver@:1.service
[Unit]
Description = Remote desktop service (VNC)
After = syslog.target network.target
[Service]
Type = forking
User = linuxize
Group = linuxize
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre = /bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart = /usr/bin/vncserver %I
PIDFile = /home/linuxize/.vnc/%H%i.pid
ExecStop = /bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy = multi-user.target
保存并关闭文件。通知 systemd 我们创建了一个新的单元文件:
sudo systemctl daemon-reload
下一步是使用以下命令启用单元文件:
sudo systemctl enable vncserver@:1.service
号码1
之后@
符号定义 VNC 服务将在其上运行的显示端口。在此示例中,这是默认值1
,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@:1.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2020-04-06 19:27:47 UTC; 16s ago
Process: 909 ExecStart=/usr/bin/vncserver %I (code=exited, status=0/SUCCESS)
Process: 891 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
Main PID: 923 (Xvnc)
...
连接到 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
系统将提示您输入用户密码。
不要忘记更换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。打开 VNC 查看器,输入localhost:5901
,然后单击Connect
button.
出现提示时输入密码,您应该会看到默认的 Xfce 桌面。它应该看起来像这样:
您现在可以开始使用键盘和鼠标从本地计算机与远程 XFCE 桌面进行交互。
结论#
到现在为止,您应该已经启动并运行了一个 VNC 服务器,并且您可以使用图形界面轻松管理您的 CentOS 7 服务器。
要将 VNC 服务器配置为为多个用户启动显示,请使用以下命令创建初始配置并设置密码:vncserver
命令并使用不同的端口创建新的服务文件。
如果您有任何疑问,请随时发表评论。