我最近遵循了在这里找到的指南:如何在 RHEL 8 上安装 VNC 服务器为给定用户创建 VNC 会话。我创建了一个新的用户帐户:engineer
并更新了 systemd 服务文件以指向新的用户帐户,如下所示:
[engineer@localhost ~]$ cat /etc/systemd/system/[email protected]
[Unit]
Description=Remote Desktop Service (VNC)
After=syslog.target network.target
[Service]
Type=forking
WorkingDirectory=/home/engineer
User=engineer
Group=engineer
PIDFile=/home/engineer/.vnc/%H%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver -autokill %i
ExecStop=/usr/bin/vncserver -kill %i
[Install]
WantedBy=multi-user.target
我为该engineer
帐户创建了一个新的 vnc 密码,然后systemctl daemon-reload
在创建服务文件后执行了命令,然后执行了命令:systemctl start vncserver@:1
按照指南,现在我收到以下错误消息:
Failed to import environment: Process org.freedesktop.systemd1 exited with status 1
令人烦恼的是,在更新服务文件之前一切都工作正常vncserver@
。
有趣的是,如果我将服务文件中的所有设置恢复为原始用户,它就不会失败。
答案1
这本身可能不是答案,但我根据从以下两个来源找到的信息找到了我需要的更简单的实现,所以我想我会分享:
以下步骤假设您已安装TigerVNC
且未执行任何其他操作。
首先,我登录用户帐户并通过执行以下命令创建 vnc 密码:
$ vncpasswd
出现提示时我没有设置仅查看密码。
接下来,我修改了vncserver.user
位于:的文件,/etc/tigervnc/
并按照文件中的示例添加了我的用户。
保存更改后,我 通过执行以下命令将用户环境配置模板从/etc/tigervnc/
目录复制到我的用户帐户目录:home
$ cp /etc/tigervnc/vncserver-config-mandatory ~/.vnc/config
复制模板后,我编辑了文件config
来定义我的会话和所需的屏幕分辨率:
session=xfce4-session
geometry=1920x1080
systemd
接下来,我通过执行命令复制服务模板:
$ sudo cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service
将文件复制到正确的目录后,我使用以下两行对其进行了修改:
Restart=on-success
RestartSec=15
我添加这两行的原因是我注意到,如果您在使用 VNC 会话时注销桌面环境,它实际上会停止systemd
服务文件。这些附加行将检查这一点,然后在 15 秒后重新启动服务。
最后采取的步骤是首先systemd
通过执行以下命令启动服务:
$ sudo systemctl start vncserver@:1
systemd
然后我通过命令检查服务是否已成功启动:
$ sudo systemctl status vncserver@:1
确认systemd
服务已启动后,我尝试使用端口连接到 IP 地址:5901
。
当我对一切感到满意后,我启用了该systemd
服务,以便它在引导期间启动:
$ sudo systemctl enable vncserver@:1
我希望这些信息对其他人有帮助。