在本教程中,我们将了解在 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
这将需要重新启动。 类型:
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
.
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
9.配置防火墙打开VNC使用的端口
您需要使用 firewall-cmd 命令打开 VNC 服务器使用的端口:
firewall-cmd --zone=public --permanent --add-service=vnc-server firewall-cmd --reload
添加更多用户
您需要为其他用户重复步骤 3-8。 每个用户都有自己的服务单元文件。
例如,添加另一个名为的用户 seniordev
替换每次出现 juniordev
和 seniordev
和 :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
命令。
输入正确的密码后,您现在可以远程控制您的桌面。
通过 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 服务器的安全方式。