在 CentOS 8 上安装 VNC 服务器的分步指南

在本教程中,我们将了解在 CentOS 8 机器上安装和设置 VNC 服务器的步骤。 虚拟网络 或虚拟网络计算是一种独立于平台的协议,它使用户能够以图形方式连接到远程计算机系统并对其进行控制。 它遵循服务器-客户端架构。

在 CentOS 8 上安装 VNC 服务器的步骤

本教程中的几乎所有命令都需要超级用户权限。 因此,要么使用切换到 root 用户 su 或在每个命令前加上 sudo.

1. 安装图形用户界面包

您可能正在运行非 GUI CentOS 服务器。 要使用 VNC,您需要有一个 GUI,因为 VNC 的目的是远程查看桌面。 如果您已经在 GUI 上,则可以跳过此步骤.

可以使用 dnf 命令安装 GUI 相关的包:

dnf groupinstall "Server with GUI" 
安装图形用户界面

上述命令安装 GNOME 桌面环境。 这是一个很大的安装。 所以,坐下来喝杯咖啡,因为这需要一段时间。

GUI 相关的软件包现已安装,但系统仍处于非 GUI 模式(多用户模式或运行级别 3)。 如果重新启动,您仍将处于此非 GUI 模式。 到 永久性 切换到 GUI 模式(运行级别 5),键入。

systemctl set-default graphical 
更改为运行级别 5

这将需要重新启动。 类型:

reboot 

暂时地 在不重新启动的情况下更改为运行级别 5,键入:

systemctl isolate graphical 

2.安装VNC服务器

CentOS 8 有许多 VNC 服务器可用。我们将安装 Tiger VNC 服务器。 它是一个流行的 VNC 服务器,可以使用 dnf 命令安装:

dnf install tigervnc-server 

3. 为 VNC 添加用户

通常,服务器安装只有 root 用户。 如果您已经有其他用户,则可以跳过此步骤。

要添加用户,您可以使用 useradd 命令。 出于本教程的目的,我将创建一个名为 juniordev.

useradd juniordev passwd juniordev 
添加用户添加用户

4. 创建 VNC 密码

您还需要为用户设置 VNC 密码。 它可以与该用户的登录密码相同或不同。 首先,您需要更改为用户。 为此并添加密码,请键入:

su - <USER> vncpasswd 
密码网络密码

当您希望用户不通过鼠标和键盘与桌面交互时,将需要仅查看密码。

通过键入以下内容更改回 root 用户:

exit 

5.编辑VNC Server的Unit文件

在安装包时, dnf 还安装了一个通用的 VNC 服务单元文件 /lib/systemd/system 目录。 将该文件复制到 /etc/systemd/system 使用cp命令查看目录:

cp /lib/systemd/system/[email protected] /etc/systemd/system/[email protected]:1.service 

注意’:1‘ 在服务单元文件的名称中。 VNC 本身在端口 5900 上运行。此外,每个用户都必须运行自己的 VNC 服务器。 因此,每个用户都必须通过单独的端口进行连接。 文件名中的数字告诉 VNC 在子端口上运行该服务 5900.

:n 转换为端口号 5900+n. 所以, :1 转换为端口号 5901.

现在打开 /etc/systemd/system/[email protected]:1.service 使用任何文本编辑器。 我将使用 nano 文本编辑器:

nano /etc/systemd/system/[email protected]:1.service 

代替 <USER> 与您要为其运行 VNC 服务器的用户。 因为我想为用户运行它 juniordev,我会替换 <USER>juniordev.

会议VNC 配置

Save 并退出编辑器。

6. 重新加载 Systemd 守护进程

通知 systemctl 关于单元文件或新单元文件中的更改,您需要通过键入以下内容重新加载 systemd 守护程序:

systemctl daemon-reload 

7. 启动 VNC 服务器

守护进程重新加载后,您需要使用 systemctl 命令:

systemctl start [email protected]:1.service 

要在启动时自动启动它,请键入

systemctl enable [email protected]:1.service 

8.检查VNC Server的状态

这可以再次使用 systemctl 命令 :

systemctl status [email protected]:1.service 
Vnc 服务状态 1VNC服务器状态

9.配置防火墙打开VNC使用的端口

您需要使用 firewall-cmd 命令打开 VNC 服务器使用的端口:

firewall-cmd --zone=public --permanent --add-service=vnc-server firewall-cmd --reload 

添加更多用户

您需要为其他用户重复步骤 3-8。 每个用户都有自己的服务单元文件。

例如,添加另一个名为的用户 seniordev 替换每次出现 juniordevseniordev:1 :2 在步骤中。

连接到 VNC 服务器

您需要安装 VNC 查看器才能连接到 VNC 服务器 从客户端系统. 我将使用 Tiger VNC Viewer 从 Ubuntu 机器进行连接。 要安装它,请键入:

sudo apt install tigervnc-viewer 

对于其他发行版,您可以使用它们各自的包管理器安装它们。

通过 IP 地址连接到 VNC 服务器 192.168.1.66 和端口号 5901, 类型:

vncviewer 192.168.1.66:5901 

它会打开一个窗口,询问您的密码。 在这里,您需要使用 vncpasswd 命令。

客户端VNC客户端

输入正确的密码后,您现在可以远程控制您的桌面。

Vnc 连接VNC 连接

通过 SSH 隧道连接

您可能会注意到 VNC 查看器发出的警告,指出连接不安全。 这是因为 VNC 流量未加密且容易被嗅探。 要安全地连接到 VNC 服务器,您可以通过 SSH 隧道进行连接。 SSH 是一种协议,它提供了一种安全地操作网络相关服务的安全方式。

您需要使用 ssh 命令从客户端创建隧道。 运行以下命令 在客户端

ssh -L 5901:192.168.1.66:5901 -N -f [email protected] 

-L 选项指定要转发的本地端口。 本地端口转发的语法是 local_port:remote_host:remote_port. 这 -N 选项指示 SSH 在登录后不要像往常一样显示 shell。 -f 选项告诉 SSH 进入后台而不是“霸占”终端。 最后一个论点是 [email protected]_host.

上面的命令转发我本地机器的端口 5901 到远程机器的端口 5901.

如果您没有设置 SSH 密钥,它会询问您远程用户的密码。 这将是登录密码和 不是 VNC 密码。

然后连接到客户端上的服务器类型:

vncviewer localhost:5901 

Enter 你的 VNC 密码就像你在普通 VNC 会话中一样。

您会注意到查看器仍然会警告您,因为它不知道流量正在通过 SSH 隧道传递,但连接是安全的。

故障排除

有可能是 SELinux (Security-Enhanced Linux) 不断拒绝对 VNC Server 的许可。 要知道 SELinux 是否是罪魁祸首,请检查服务状态的输出。 SELinux 是一种安全机制,可提供基于上下文的文件标签。 您可以尝试禁用它以试用 VNC,但要小心,因为禁用 SELinux 是一种解决方法,可能会危及安全性。

要禁用它,请键入:

setenforce 0 sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux 

您也可能无法运行 VNC Server,因为目录 /tmp/.X11-unix 不是空的。 尝试使用 rm 命令删除所有文件:

rm -rf /tmp/.X11-unix/* 

结论

VNC 提供了一种控制远程桌面的强大方法。 它是 TeamViewer 等专有软件的可行替代方案,但它需要一些配置。 此外,通过 SSH 隧道连接提供了一种连接到 VNC 服务器的安全方式。