Для подключения к активной сесии DISPLAY :0 нужно использовать x11vnc
[root@vnc-host ~]# yum install x11vnc
Вывод программы
Loaded plugins: fastestmirror, langpacks, presto, refresh-packagekit
Loading mirror speeds from cached hostfile
updates/metalink | 4.3 kB 00:00
* fedora: mirrors.nic.cz
* rpmfusion-free: ftp.upjs.sk
* rpmfusion-free-updates: ftp.upjs.sk
* rpmfusion-nonfree: ftp.upjs.sk
* rpmfusion-nonfree-updates: ftp.upjs.sk
* updates: mirrors.nic.cz
adobe-linux-i386 | 951 B 00:00
rpmfusion-free-updates | 3.3 kB 00:00
rpmfusion-nonfree-updates | 3.3 kB 00:00
Resolving Dependencies
--> Running transaction check
---> Package x11vnc.i686 0:0.9.13-1.fc16 will be installed
--> Processing Dependency: Xvfb for package: x11vnc-0.9.13-1.fc16.i686
--> Running transaction check
---> Package xorg-x11-server-Xvfb.i686 0:1.11.4-3.fc16 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================================================================================================
Package Arch Version Repository Size
=============================================================================================================================================================
Installing:
x11vnc i686 0.9.13-1.fc16 updates 811 k
Installing for dependencies:
xorg-x11-server-Xvfb i686 1.11.4-3.fc16 updates 770 k
Transaction Summary
=============================================================================================================================================================
Install 1 Package (+1 Dependent package)
Total download size: 1.5 M
Installed size: 4.4 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): x11vnc-0.9.13-1.fc16.i686.rpm | 811 kB 00:00
(2/2): xorg-x11-server-Xvfb-1.11.4-3.fc16.i686.rpm | 770 kB 00:00
-------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 1.8 MB/s | 1.5 MB 00:00
Running Transaction Check
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : xorg-x11-server-Xvfb-1.11.4-3.fc16.i686 1/2
Installing : x11vnc-0.9.13-1.fc16.i686 2/2
Verifying : xorg-x11-server-Xvfb-1.11.4-3.fc16.i686 1/2
Verifying : x11vnc-0.9.13-1.fc16.i686 2/2
Installed:
x11vnc.i686 0:0.9.13-1.fc16
Dependency Installed:
xorg-x11-server-Xvfb.i686 0:1.11.4-3.fc16
Complete!
Для интереса смотрим какие файлы были установлены с пакетами
[root@vnc-host ~]# rpm -ql x11vnc.i686
/usr/bin/x11vnc
/usr/share/applications/x11vnc.desktop
/usr/share/doc/x11vnc-0.9.13
/usr/share/doc/x11vnc-0.9.13/AUTHORS
/usr/share/doc/x11vnc-0.9.13/COPYING
/usr/share/doc/x11vnc-0.9.13/ChangeLog
/usr/share/doc/x11vnc-0.9.13/NEWS
/usr/share/doc/x11vnc-0.9.13/README
/usr/share/doc/x11vnc-0.9.13/TODO
/usr/share/man/man1/x11vnc.1.gz
[root@vnc-host ~]# rpm -ql xorg-x11-server-Xvfb.i686
/usr/bin/Xvfb
/usr/bin/xvfb-run
/usr/share/man/man1/Xvfb.1.gz
Настройка 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
Пытаемся запустить
[root@vnc-host ~]# x11vnc -display :0
Вывод программы
15/02/2015 23:30:02 passing arg to libvncserver: -rfbauth
15/02/2015 23:30:02 passing arg to libvncserver: /root/.vnc/passwd
15/02/2015 23:30:02 x11vnc version: 0.9.13 lastmod: 2011-08-10 pid: 25130
No protocol specified
15/02/2015 23:30:02 XOpenDisplay(":0") failed.
15/02/2015 23:30:02 Trying again with XAUTHLOCALHOSTNAME=localhost ...
No protocol specified
15/02/2015 23:30:02 ***************************************
15/02/2015 23:30:02 *** XOpenDisplay failed (:0)
*** x11vnc was unable to open the X DISPLAY: ":0", it cannot continue.
*** There may be "Xlib:" error messages above with details about the failure.
Some tips and guidelines:
** An X server (the one you wish to view) must be running before x11vnc is
started: x11vnc does not start the X server. (however, see the -create
option if that is what you really want).
** You must use -display <disp>, -OR- set and export your $DISPLAY
environment variable to refer to the display of the desired X server.
- Usually the display is simply ":0" (in fact x11vnc uses this if you forget
to specify it), but in some multi-user situations it could be ":1", ":2",
or even ":137". Ask your administrator or a guru if you are having
difficulty determining what your X DISPLAY is.
** Next, you need to have sufficient permissions (Xauthority)
to connect to the X DISPLAY. Here are some Tips:
- Often, you just need to run x11vnc as the user logged into the X session.
So make sure to be that user when you type x11vnc.
- Being root is usually not enough because the incorrect MIT-MAGIC-COOKIE
file may be accessed. The cookie file contains the secret key that
allows x11vnc to connect to the desired X DISPLAY.
- You can explicitly indicate which MIT-MAGIC-COOKIE file should be used
by the -auth option, e.g.:
x11vnc -auth /home/someuser/.Xauthority -display :0
x11vnc -auth /tmp/.gdmzndVlR -display :0
you must have read permission for the auth file.
See also '-auth guess' and '-findauth' discussed below.
** If NO ONE is logged into an X session yet, but there is a greeter login
program like "gdm", "kdm", "xdm", or "dtlogin" running, you will need
to find and use the raw display manager MIT-MAGIC-COOKIE file.
Some examples for various display managers:
gdm: -auth /var/gdm/:0.Xauth
-auth /var/lib/gdm/:0.Xauth
kdm: -auth /var/lib/kdm/A:0-crWk72
-auth /var/run/xauth/A:0-crWk72
xdm: -auth /var/lib/xdm/authdir/authfiles/A:0-XQvaJk
dtlogin: -auth /var/dt/A:0-UgaaXa
Sometimes the command "ps wwwwaux | grep auth" can reveal the file location.
Starting with x11vnc 0.9.9 you can have it try to guess by using:
-auth guess
(see also the x11vnc -findauth option.)
Only root will have read permission for the file, and so x11vnc must be run
as root (or copy it). The random characters in the filenames will of course
change and the directory the cookie file resides in is system dependent.
See also: http://www.karlrunge.com/x11vnc/faq.html
Проверяем по пунктам всё что было в диагостическом выводе.
[root@vnc-host ~]# echo $DISPLAY
:0
[root@vnc-host ~]# ls -l /var/run/kdm/
total 8
-rw-------. 1 root root 44 Feb 14 08:09 A:0-NVTXPb
-rw-r--r--. 1 root root 5 Feb 14 08:09 kdm.pid
[root@vnc-host ~]# ps wwwwaux | grep auth
root 1272 0.6 1.8 56900 19176 tty1 Ss+ Feb14 18:52 /usr/bin/X :0 vt1 -background none -nolisten tcp -auth /var/run/kdm/A:0-NVTXPb
user002 2069 0.0 0.2 98468 2580 ? Sl Feb14 0:00 /usr/libexec/kde4/polkit-kde-authentication-agent-1
root 31269 0.0 0.0 4604 796 pts/1 S+ 11:07 0:00 grep --color=auto auth
[root@vnc-host ~]# x11vnc -findauth
XAUTHORITY=/var/run/kdm/A:0-NVTXPb
Нужно с параметром -auth передать полученный файл /var/run/kdm/A:0-NVTXPb. Но с версии x11vnc 0.9.9 появился более удобный ключ -auth guess который автоматически найдёт нужный файл.
[root@vnc-host ~]# x11vnc -auth guess -display :0
Для однократного соединения с VNC сервером можно использовать такой вариант команды:
[root@vnc-host ~]# x11vnc -rfbauth /root/.vnc/passwd -auth guess -display :0
Он самостоятельно найдёт и использует XAUTHORITY=/var/run/kdm/A:0-NVTXPb, запустится на порту 5900, возьмёт пароль из файла /root/.vnc/passwd, подождёт одного соединения клиента и когда клиент завершит сессию сервер также завершится.
Забегая вперёд, до инсталяции VNC клиента, приведу удобную команду для однократного запуска vnc сервера через ssh туннель на удалённой машине.
[user001@home ~]$ ssh -L localhost:5900:localhost:5900 root@192.168.12.252 'x11vnc -quiet -once -timeout 20 -localhost -auth guess -display :0 -rfbauth /root/.vnc/passwd'& sleep 5; vncviewer localhost:0; sleep 1; echo
Здесь устанавливается ssh канал на хост 192.168.12.252 и через него пробрасывается локальный порт 5900 на удалённый 5900 и там запускается x11vnc.
x11vnc ждёт 20 секунд соединения от клиента (-timeout 20). Если клиент не соединится x11vnc завершится.
Выжидается 5 секунд чтобы с удалённой стороны x11vnc успел стартануть и открыть порт и на этой стороне запускается vncviewer на открытый локальный порт 5900.
После завершения vncviewer выжидается 1 секунда и печатается эхо чтобы пользователю стало видно что команда завершилась.
Со стороны удалённой машины x11vnc отваливается самостоятельно когда обнаружит отсоединение клиента (-once она ставит и по умолчанию) и как только это происходит завершается и сам туннель.
Это позволяет не запоминать PID ssh туннеля и затем “убивать” его после завершения vncviewer.
Опции:
-quiet — уменьшает количество диагностических сообщений;
-rfbauth /root/.vnc/passwd — задаёт файл с паролем для аутентификации (без неё vnc откроется без пароля)
Для того чтобы x11vnc запустился как фоновый процесс и многократно ждал соединений нужно использовать такую команду:
[root@vnc-host ~]# x11vnc -many -background -auth guess -display :0 -rfbauth /root/.vnc/passwd
Такую команду можно запускать при каждом старте X сервера.
После запуска можем посмотреть процесс и порт.
[root@vnc-host ~]# ps afx | grep -v grep | grep x11vnc
25374 ? Ss 0:07 x11vnc -many -background -rfbauth /root/.vnc/passwd -auth guess -display :0
[root@vnc-host ~]# netstat -nlp -A inet | grep 5900
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 25374/x11vnc
И теперь подключаемся с другой машины.
[user001@home ~]$ sudo yum install tigervnc
[user001@home ~]$ vncviewer 192.168.12.252:0
TigerVNC Viewer 32-bit v1.3.0 (20140319)
Built on Mar 19 2014 at 17:09:08
Copyright (C) 1999-2011 TigerVNC Team and many others (see README.txt)
See http://www.tigervnc.org for information on TigerVNC.
Sun Feb 15 23:33:45 2015
CConn: connected to host 192.168.12.252 port 5900
CConnection: Server supports RFB protocol version 3.8
CConnection: Using RFB protocol version 3.8
Sun Feb 15 23:33:49 2015
PlatformPixelBuffer: Using default colormap and visual, TrueColor, depth 24.
CConn: Using pixel format depth 24 (32bpp) little-endian rgb888
CConn: Using Tight encoding
Материалы для детального изучения.
man x11vnc
http://www.karlrunge.com/x11vnc/
Как запустить VNC на виртуальном DISPLAY :1 читайте статью.