VNC X server на виртуальном DISPLAY:1

Версия дистрибутива используемого в этом примере

[root@vnc-host ~]# cat /etc/redhat-release 
Fedora release 16 (Verne)

Установка VNC сервера

[root@vnc-host ~]# yum -y install tigervnc-server


Добавление сервиса для запуска VNC сервера на виртуальном DISPLAY :1

[root@vnc-host ~]# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

Прописать необходимого пользователя и его каталог с PID файлом (в примере это user002)

[root@vnc-host ~]# cat /etc/systemd/system/vncserver@\:1.service
[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 user002 -c "/usr/bin/vncserver %i"
PIDFile=/home/user002/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target

Установка пароля для пользователя user002 (пароль устанавливается в используя домашний каталог из окружения пользователя)

[root@vnc-host ~]# su user002
[root@vnc-host ~]$ vncpasswd
Password:
Verify:

Эта команда запишет или перезапишет файл $HOME/.vnc/passwd у пользователя user002.

Настройка Firewall

Ручной IPTABLESNetwork manager
[root@vnc-host ~]# cat /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:VNC - [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -m multiport --dports 5900:5910 -j VNC
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

-A VNC -s 192.168.12.0/24 -j ACCEPT
-A VNC -j REJECT --reject-with icmp-host-prohibited
COMMIT
[root@vnc-host ~]# firewall-cmd --permanent --zone=public --add-service vnc-server

Перезагрузим демона, разрешим автозапуск vncserver, и запустим его вручную.

[root@vnc-host ~]# systemctl daemon-reload
[root@vnc-host ~]# systemctl enable vncserver@:1.service
[root@vnc-host ~]# systemctl start vncserver@:1.service

Такая попытка привязать vncserver на DISPLAY :0 не пройдёт.

[root@vnc-host ~]# x0vncserver -rfbport=5900 -PasswordFile=/root/.vnc/passwd -display :0
No protocol specified
x0vncserver: unable to open display ":0"

Для того чтобы подключиться по VNC к текущему реальному DISPLAY :0 читайте статью

Leave a Reply