无法在 rhel 7 上启动 vncserver

无法在 rhel 7 上启动 vncserver

再会

我正在运行内核版本为 3.10.0-514.el7.x86_64 的 RHEL 7.6。

Vncserver版本是tigervnc-server-1.8.0-17.el7.x86_64。

我的 vncserver@:1.service 文件看起来像这样,我已经用<user>有效用户替换了。

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l <user> -c "/usr/bin/vncserver %i"
PIDFile=/home/<user>/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

当我执行命令 systemctl start vncserver@:1 时出现以下错误

由于超出配置的资源限制,vncserver@:1.service 的作业失败。有关详细信息,请参阅“systemctl status vncserver@:1.service”和“journalctl -xe”。

systemctl status vncserver@:1 显示此信息

10月01日09:05:21 systemd[1]:正在启动远程桌面服务(VNC)...

10 月 01 日 09:05:24 host_name systemd[1]: 启动后无法打开 PID 文件 /home/user/.vnc/host_name:1.pid (还不能打开吗):没有此文件或目录

10 月 01 日 09:05:24 host_name systemd[1]: 无法启动远程桌面服务(VNC)。

10 月 01 日 09:05:24 主机名 systemd[1]: 单元 vncserver@:1.service 进入 > 失败状态。

10 月 01 日 09:05:24 host_name systemd[1]: vncserver@:1.service 失败。

每次我执行 systemctl start vncserver@:1 时,/home/user/.vnc 中的 N 增加 host_name:N.pid 文件应该保持为 1。

我的 .vnc 目录中的 xstartup 文件如下所示。

    #!/bin/sh
     unset SESSION_MANAGER 
     unset DBUS_SESSION_BUS_ADDRESS
     /etc/X11/xinit/xinitrc 
    # Assume either Gnome or KDE will be started by default when installed 
    # We want to kill the session automatically in this case when user logs out. In case you modify 
    # /etc/X11/xinit/Xclients or ~/.Xclients yourself to achieve a different result, then you should 
    # be responsible to modify below code to avoid that your session will be automatically killed 

     if [ -e /usr/bin/gnome-session -o -e /usr/bin/startkde ]; 
     then
         vncserver -kill $DISPLAY 
     fi

我已经禁用防火墙,并将 seLinux 置于 Permissive 模式,但仍然出现相同的错误,但是我为 root 创建了一个 vncserver@:13.service 文件,启动时没有问题。

任何帮助将不胜感激

问候

答案1

我在带有 3.10.0-1062.4.3.el7.x86_64 内核的 centos-release-7-7.1908.0.el7.centos.x86_64 上遇到了同样的问题,设置和配置完全相同。

我通过 journalctl -xe 注意到,在服务启动阶段尝试访问 /tmp/.X11-unix/X59 文件时生成了一个错误(我的 VNC 设置为在端口 5959 上运行)。手动删除它后,服务又恢复正常。

答案2

RHEL7 和 CentOS 7 默认开启 iptables。我收到了各种奇怪的错误。这个和其中一个非常相似。您可以通过运行以下命令来确保这是您的情况:

sudo systemctl status firewalld

如果是这种情况,您应该在 iptables 中打开 VNC,请参阅此处的详细信息: https://wiki.centos.org/HowTos/VNC-Server#Amend_the_iptables或者https://www.cyberciti.biz/faq/linux-iptables-open-vncserver-port-6000-5800-5900/

或者,如果此服务器不需要通过 iptables 保护(理想情况下,如果它位于不同的防火墙后面),您可以像这样禁用并停止 iptables:

sudo systemctl stop firewalld && sudo systemctl disable firewalld

停止将停止它,禁用将阻止它在重启后返回。

相关内容