如何在CentOS 8上安装和配置VNC

虚拟网络计算(VNC)是一个图形桌面共享系统,可让您使用键盘和鼠标远程控制另一台计算机。

本文介绍了在CentOS 8上安装和配置VNC服务器的步骤。我们还将向您展示如何通过SSH隧道安全地连接到VNC服务器。

先决条件

要遵循本指南,您需要以具有sudo特权的用户身份在远程CentOS计算机上登录。

安装桌面环境

通常,服务器没有安装桌面环境。 如果要连接的计算机没有GUI,则第一步是安装它。 否则,请跳过此步骤。

运行以下命令在远程计算机上安装Gnome(CentOS 8中的默认桌面环境):

sudo dnf groupinstall "Server with GUI"

根据您的系统,下载和安装Gnome软件包以及相关性可能会花费一些时间。

安装VNC服务器

TigerVNC是积极维护的高性能开源VNC服务器。 在默认的CentOS存储库中可用它来进行安装:

sudo dnf 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 在上面输出中的主机名之后。 这指示正在运行VNC服务器的显示端口号。 在我们的例子中,服务器在TCP端口上运行 5901 (5900 + 1)。 如果创建第二个实例,它将在下一个可用端口上运行,即 :2,表示服务器正在端口上运行 5902 (5900 + 2)。

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

在继续下一步之前,请先使用来停止VNC实例。 vncserver 用一个命令 -kill 选项和服务器号作为参数。 在我们的例子中,服务器在端口5901(:1),请停止运行:

vncserver -kill :1
Killing Xvnc process ID 19681

配置VNC服务器

现在,在远程CentOS机器上都安装了Gnome和TigerVNC,下一步是将TigerVNC配置为使用Gnome。 VNC服务器使用 ~/.vnc/xstartup 文件以在创建新桌面时启动应用程序。 打开文件:

vim ~/.vnc/xstartup

并按如下所示进行编辑:

〜/ .vnc / xstartup

#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
dbus-launch --exit-with-session gnome-session &

保存并关闭文件 。 每当您启动或重新启动TigerVNC服务器时,以上脚本都会自动执行。

如果要将其他选项传递给VNC服务器,请打开 ~/.vnc/config 文件并在每行添加一个选项。 文件中列出了最常用的选项。 取消注释并根据自己的喜好进行修改。

这是一个例子:

〜/ .vnc /配置

# securitytypes=vncauth,tlsvnc
# desktop=sandbox
geometry=1920x1080
# localhost
# alwaysshared

创建系统单元文件

单位文件使您可以轻松启动,停止和重新启动服务。 通常,存储用户单元文件的最佳位置是 ~/.config/systemd/user。 创建目录:

mkdir -p ~/.config/systemd/user

复制默认的vncserver单元文件:

cp /usr/lib/systemd/user/[email protected] ~/.config/systemd/user/

通知系统新 用户 单位文件存在:

systemctl --user daemon-reload

启动VNC服务并在启动时启用它:

systemctl --user enable [email protected]:1.service --now

号码 1@: 定义VNC服务将在其上侦听的显示端口。 我们正在使用 1,这意味着VNC服务器将监听端口 5901 正如我们在上一节中讨论的那样。

启用延迟,以便用户服务在引导时启动并在用户未登录时保持运行:

loginctl enable-linger

验证服务是否成功启动:

systemctl --user status [email protected]:1.service
[email protected]:1.service - Remote desktop service (VNC)
   Loaded: loaded (/home/linuxize/.config/systemd/user/[email protected]; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-01-30 22:14:08 UTC; 2s ago
  Process: 20813 ExecStart=/usr/bin/vncserver :1 (code=exited, status=0/SUCCESS)
  Process: 20807 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
   CGroup: /user.slice/user-1000.slice/[email protected]/vncserver.slice/[email protected]:1.service
  ...

连接到VNC服务器

VNC不是加密协议,可以进行数据包嗅探。 推荐的方法是创建SSH隧道,以安全地从端口上的本地计算机转发流量 5901 到同一端口上的远程服务器。

在Linux和macOS上设置SSH隧道#

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

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

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

别忘了更换 usernameserver_ip_address 以及您的用户名和服务器的IP地址。

在Windows上设置SSH隧道#

Windows用户可以使用PuTTY设置SSH隧道。

打开Putty,然后在 Host name or IP address 领域。

在下面 Connection 菜单,展开 SSH 然后选择 Tunnels。 输入VNC服务器端口(5901) 在里面 Source Port 字段,输入 server_ip_address:5901 在里面 Destination 字段,然后单击 Add 按钮,如下图所示:

VNC SSH隧道腻子

回到 Session 页面以保存设置,因此您无需每次都输入它们。 要登录到远程服务器,请选择保存的会话,然后单击 Open 按钮。

使用Vncviewer连接

要连接到远程服务器,请打开VNC查看器,然后输入 localhost:5901

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

我们正在使用TigerVNC:

VNC查看器

在出现提示时输入密码,您应该会看到默认的Gnome桌面。 它看起来应该像这样:

VNC桌面

就是这样! 现在,您可以使用键盘和鼠标从本地计算机开始在远程桌面上工作。

结论#

我们已经向您展示了如何设置VNC服务器并连接到远程CentOS 8计算机。

要为一个以上的用户启动显示,请重复相同的步骤。 创建初始配置,使用 vncserver 命令,并使用其他端口创建新的服务文件。

如有任何疑问,请随时发表评论。

centos vnc

Sidebar