在 Rocky Linux 8 上安装 VNC 服务器

本指南将带您了解如何在 Rocky Linux 8 上安装 VNC Server。VNC 是 Virtual Network Computing 的首字母缩写词。 它可以轻松共享系统的图形桌面,以便对系统进行远程控制。

在 Rocky Linux 8 上安装 VNC 服务器

在本指南中,我们使用 TigerVNC 在 Rocky Linux 8 上设置 VNC 服务器。 TigerVNC 在客户端 – 服务器架构中工作 vncserver 是提供对远程桌面的访问的实用程序和 vncviewer 是用于连接到 VNC 服务器的客户端。

在 Rocky Linux 8 上安装 VNC 服务器

VNC 服务器由 tigervnc-server 默认 Rocky Linux 8 AppStream 存储库中提供的软件包。 因此,通过运行以下命令更新您的系统并安装 VNC 服务器;

sudo dnf update
sudo dnf install tigervnc-server

在 Rocky Linux 8 上配置 VNC 服务器

创建 VNC 连接用户帐户

安装完成后,继续配置 VNC 服务器以定义允许访问远程桌面的用户。

笔记: 用户必须已经存在于系统中。

但是,您可以为 VNC 登录创建一个用户帐户。

useradd janedoe
passwd janedoe

在 Rocky Linux 8 上禁用 Wayland 并启用 Xorg 显示服务器

默认情况下,Rocky Linux 8 使用 Wayland 是默认的 X 服务器. 要使 VNC 登录正常工作,您需要强制使用登录屏幕 Xorg 服务器通过取消注释行 #WaylandEnable=false,在 /etc/gdm/custom.conf 配置文件。

sed -i 's/#WaylandEnable/WaylandEnable/' /etc/gdm/custom.conf

重新启动系统

重新启动 Rocky Linux 8 系统以应用更改。

系统启动后,以您将用于远程 VNC 桌面登录的用户身份登录, 在这种情况下,珍妮多。

创建 VNC Systemd 服务单元文件

接下来,在您希望允许通过 VNC 服务器连接到远程桌面的每个用户的主目录下创建每个用户的 VNC systemd 单元文件。

例如,如果要配置 VNC 服务器为用户提供显示, janedoe, 在下为该用户创建 VNC systemd 配置文件 /home/janedoe/.config/systemd/user.

作为有问题的用户并在上面创建服务单元目录;

su - janedoe
mkdir -p ~/.config/systemd/user

创建用户 vnc 服务如下。

cat > ~/.config/systemd/user/[email protected] << 'EOL' [Unit] Description=Remote desktop service (VNC) After=syslog.target network.target  [Service] Type=forking  ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' ExecStart=/usr/bin/vncserver %i -geometry 1912x988 ExecStop=/usr/bin/vncserver -kill %i  Restart=on-success RestartSec=15  [Install] WantedBy=default.target EOL 

您还可以通过添加关键字来限制仅通过本地主机(环回)接口连接到 VNC 服务器, -localhostExecStart 线。

ExecStart=/usr/bin/vncserver -localhost %i

然后在运行时,它只在本地主机上打开连接。

要创建如上所示的 systemd 服务,您也可以复制 /usr/lib/systemd/system/[email protected] 文件到上面创建的用户 systemd 服务目录。

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

并修改它以适合您的设置。 例如,您可以调整 屏幕尺寸几何。

重新加载 systemd 配置以实现上述更改。

systemctl --user daemon-reload

笔记: 如果你得到错误, 无法连接到总线:没有那个文件或目录,那么你需要设置你的 XDG_RUNTIME_DIR 环境变量正确(这通常在您通过 GUI 登录时自动完成)。

如果您通过 GUI 登录并仍然遇到问题,请手动设置此环境变量, XDG_RUNTIME_DIR=/run/user/$(id -u), 在您的 bashrc 文件中。

echo ' XDG_RUNTIME_DIR=/run/user/$(id -u)' >> ~/.bashrc source ~/.bashrc

接下来,确认您的环境变量,使用 systemctl --user show-environment 命令。

systemctl --user show-environment
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1001/bus DESKTOP_SESSION=gnome DISPLAY=:1 GDK_BACKEND=x11 GDMSESSION=gnome GDM_LANG=en_US.UTF-8 GNOME_DESKTOP_SESSION_ID=this-is-deprecated HISTCONTROL=ignoredups HISTSIZE=1000 HOME=/home/janedoe ... ... 

创建 VNC 连接密码

接下来,为已配置 VNC 显示的用户创建 VNC 密码。 密码可以使用 vncpasswd 命令。

vncpasswd

当提示设置只读密码时,您可以选择不设置

VNC 密码存储在 $HOME/.vnc/passwd.

设置密码后,按退出 Ctrl+d 或者只是输入 exit.

运行 VNC 服务器

VNC 服务器可以作为普通的 systemd 服务运行。 但是,要运行它,您需要为该服务分配一个显示编号。 Systemd 会自动替换 %i 具有指定的显示编号。

通过运行以下命令,在特定显示编号上启动并启用 VNC 服务器。

笔记 以远程 VNC 登录用户身份运行此命令, 珍妮多 在这种情况下,并在显示器编号 2 上启动 VNC 服务器。

确保您使用的显示编号未被使用;

echo $DISPLAY

在当前未使用的显示编号上启动 VNC。

systemctl --user enable [email protected]:2 --now

为保证服务持久运行,即使用户退出,启用延迟;

loginctl enable-linger

检查状态;

systemctl status --user [email protected]:2
● [email protected]:2.service - Remote desktop service (VNC)    Loaded: loaded (/home/janedoe/.config/systemd/user/[email protected]; enabled; vendor preset: enabled)    Active: active (running) since Mon 2021-06-21 13:29:55 EDT; 31s ago   Process: 4696 ExecStart=/usr/bin/vncserver :2 -geometry 1912x988 (code=exited, status=0/SUCCESS)   Process: 4690 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :2 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)    CGroup: /user.slice/user-1001.slice/[email protected]/vncserver.slice/[email protected]:2.service            ├─4703 /usr/bin/Xvnc :2 -auth /run/user/1001/gdm/Xauthority -desktop localhost.localdomain:2 (janedoe) -fp catalogue:/etc/X11/fontpath.d -geometry 1912x988 -pn >            ├─4716 /usr/libexec/gnome-session-binary            ├─4725 dbus-launch --sh-syntax --exit-with-session            ├─4756 /usr/bin/dbus-daemon --syslog --fork --print-pid 6 --print-address 8 --session            ├─4768 /usr/bin/VBoxClient --checkhostversion            ├─4770 /usr/bin/VBoxClient --checkhostversion            ├─4804 /usr/libexec/at-spi-bus-launcher ... 

您也可以通过运行来停止 VNC 服务器会话;

systemctl --user stop [email protected]:2

在 FirewallD 上允许 VNC 服务器访问

VNC 服务器侦听 TCP 端口 590N. 其中 N 是 VNC 显示编号。 此端口根据 VNC 显示编号递增。 例如,对于显示编号 1,VCN 侦听端口 5901。

ss -alt | grep 590
LISTEN   0         5                   0.0.0.0:5902              0.0.0.0:*       LISTEN   0         5                      [::]:5902                 [::]:*

如果 firewalld 正在运行,则需要打开每个 VNC 显示端口。 例如为显示2打开5902端口,执行;

sudo firewall-cmd --add-port=5902/tcp --permanent
sudo firewall-cmd --reload

测试 VNC 服务器连接

那么如何通过 VNC 服务器连接到 Rocky Linux 8 桌面呢? vncviewer 是常用的 VNC 客户端,用于通过 VNC 服务器连接到远程桌面。

在另一个 Rocky Linux 8 上安装 TigerVNC 包,它提供 vncviewer 公用事业。

dnf install tigervnc

如果您是从 Ubuntu/Debain 连接,请安装 VNC 查看器客户端:

sudo apt install xtightvncviewer -y

安装完成后,您可以从另一台主机测试 VNC 服务器与 Rocky Linux 8 系统的连接;

vncviewer host_IP_or_hostname:5902

在哪里 host_IP_or_hostname 是运行 VNC 服务器的 Rocky Linux 8 桌面的可解析主机名。 它可以是一个 IP 地址。

如果一切顺利,系统会提示您输入 VNC 身份验证密码。

Connected to RFB server, using protocol version 3.8 Performing standard VNC authentication Password: PASSWORD_SET_WITH_vncpasswd

身份验证成功后,您现在应该登陆 Rocky Linux 8 桌面环境。

您已经通过 VNC 服务器成功连接到远程 Rocky Linux 8 桌面,这标志着我们的指南结束,关于如何在 Rocky Linux 8 上安装 VNC 服务器。

您可以通过以下链接使用 SSH 使用更安全的方式通过 VNC 登录到远程桌面。

通过 SSH 隧道连接到 VNC 服务器

其他 Rocky Linux 8 指南

在 Rocky Linux 8 上安装 phpLDAPadmin

在 Rocky Linux 8 上为 LDAP 身份验证配置 SSSD

在 Rocky Linux 8 上安装和设置 OpenLDAP

在 Rocky Linux 8 上启用 PowerTools 存储库