Не удается запустить vncserver на RHEL 7.

Вопрос или проблема

Добрый день

Я использую RHEL 7.6 с версией ядра 3.10.0-514.el7.x86_64.

Версия 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
я получаю следующую ошибку

Job for vncserver@:1.service failed because a configured resource
limit was exceeded. See “systemctl status vncserver@:1.service” and
“journalctl -xe” for details.

systemctl status vncserver@:1 показывает следующее

Oct 01 09:05:21 systemd[1]: Starting Remote desktop
service (VNC)…

Oct 01 09:05:24 host_name systemd[1]: Can’t open
PID file /home/user/.vnc/host_name:1.pid (yet?) after start: No
such file or directory

Oct 01 09:05:24 host_name systemd[1]: Failed
to start Remote desktop service (VNC).

Oct 01 09:05:24 host_name systemd[1]: Unit vncserver@:1.service entered > failed state.

Oct 01 09:05:24 host_name systemd[1]: vncserver@:1.service failed.

Каждый раз, когда я выполняю systemctl start vncserver@:1, число N увеличивается в файле host_name:N.pid в /home/user/.vnc, хотя оно должно оставаться 1.

Мой файл xstartup в каталоге .vnc выглядит так.

    #!/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 или ~/.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

Я отключил firewall и перевел seLinux в разрешающий режим, но ошибка осталась, хотя я создал файл vncserver@:13.service для root, который запускается без проблем.

Любая помощь будет очень кстати

С уважением

У меня была та же проблема на centos-release-7-7.1908.0.el7.centos.x86_64 с ядром 3.10.0-1062.4.3.el7.x86_64, точно такая же настройка и конфигурация.

Я заметил через journalctl -xe ошибку, сгенерированную во время фазы запуска службы при попытке доступа к файлу /tmp/.X11-unix/X59 (мой VNC настроен для работы на порту 5959). После его ручного удаления, служба начала работать нормально.

RHEL7 и CentOS 7 по умолчанию поставляются с включенным iptables.
Я получал всевозможные странные ошибки из-за этого. Это очень напоминало одну из таких ошибок.
Вы можете убедиться, что у вас такая же ситуация, выполнив команду:

sudo systemctl status firewalld

Если это так, вам следует открыть VNC в iptables, смотрите здесь:
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

Команда stop остановит его, а команда disable предотвратит его запуск после перезапуска.

.

Ответ или решение

Для успешного запуска VNC сервера на RHEL 7.6 важно уделить внимание многим аспектам, которые могут влиять на его работу. Разберем несколько ключевых моментов и предложим решения возможных проблем.

Теория

VNC (Virtual Network Computing) позволяет удаленному пользователю подключаться к рабочему столу автомобиля через сеть. На RHEL 7 используется серверная версия VNC – TigerVNC. Для каждого VNC-сервера создается отдельная служба systemd, которая управляется соответствующими файлами конфигурации. Проблемы с запуском сервиса могут быть вызваны как неправильной настройкой файлов конфигурации, так и различными ограничениями системных ресурсов.

Из вашего описания можно выделить несколько ключевых моментов:

  • Ошибка при запуске сервиса связана с невозможностью открытия PID-файла.
  • Нарастающий индекс номера PID указывает на то, что сервис не завершается корректно.
  • Некоторые компоненты (например, firewall или SELinux) могут вмешиваться в процесс установки и запуска VNC.

Пример

Ваш файл vncserver@:1.service выглядит правильным на первый взгляд, однако проблема с созданием PID-файла может указывать на проблемы с правами доступа к каталогу или неправильными путями в конфигурации. На это намекает сообщение об ошибке systemd, касающееся невозможности открытия PID-файла.

Возможные причины и решения:

  1. Необходимые директории и их права:

    • Убедитесь, что директория /home/<user>/.vnc существует и имеет соответствующие права доступа. Вы можете использовать команду chmod для изменения прав и chown для изменения владельца директории.
    sudo mkdir -p /home/<user>/.vnc
    sudo chown <user>:<user> /home/<user>/.vnc
    chmod 700 /home/<user>/.vnc
  2. Системные ограничения:

    • Убедитесь, что ваш пользователь имеет достаточные ресурсы, например, лимит на количество процессов (ulimit) или открытых файлов. Порой, увеличение этих лимитов может решить проблему с запусками.
  3. Проверка X-сессии:

    • Проверьте файл xstartup. Убедитесь, что все пути и команды в нем верны и что он имеет разрешения на выполнение.
  4. Ошибки SELinux:

    • Поскольку вы уже перевели SELinux в режим Permissive, проблем здесь быть не должно, но стоит удостовериться, посмотрев логи SELinux:
    sudo ausearch -m AVC -ts recent
  5. Ограничения firewall:

    • Хотя вы и отключили firewall, стоит проверить, что порты VNC (обычно 5900 + номер дисплея) не блокируются.
    sudo firewall-cmd --permanent --zone=public --add-port=5901/tcp
    sudo firewall-cmd --reload

Применение

После устранения вышеупомянутых проблем повторная попытка запуска сервиса VNC должна быть успешной. Попробуйте выполнить:

sudo systemctl daemon-reload
sudo systemctl start vncserver@:1.service
sudo systemctl enable vncserver@:1.service

В случае сохранения проблем, повторите проверку всех шагов и логов: journalctl -xe может предоставить более детальную диагностику проблем. Если по-прежнему возникают ошибки, полезно будет рассмотреть конфигурации служб и VNC на более новый пакет или обновление системы.

Заключение

Подключение VNC является эффективным способом удаленной работы с системой, однако требует тщательной настройки и учета множества факторов. Изучая проблему и предпринимая шаги по улучшению конфигурации и устранению ограничений, можно достичь стабильной работы VNC сервера на RHEL 7. Надеемся, что приведенные рекомендации помогут вам успешно решить вашу задачу.

Оцените материал
Добавить комментарий

Капча загружается...