VNC
Материал из Xgu.ru
Эта страница, пока что — сборище заготовок. |
Содержание |
[править] gdm.conf
egrep -v "^#|^\ *$" /etc/gdm/gdm.conf
[daemon] VTAllocation=false [security] [xdmcp] Enable=1 HonorIndirect=1 [gui] [greeter] [chooser] [debug] [servers] 0=VNC [server-VNC] name=VNC server command=/usr/bin/Xvnc -geometry 1000x700 -depth 24 flexible=true
Другой интересный конфиг:
[daemon] VTAllocation=false [security] AllowRoot=true AllowRemoteRoot=true [xdmcp] Enable=true HonorIndirect=true [gui] [greeter] [chooser] [debug] [servers] 0=VNC [server-VNC] name=VNC server command=/usr/bin/Xvnc -geometry 1280x1024 -depth 24 flexible=true
Не забудьте подложить ссылку на rgb.txt в каталоги:
/usr/lib/X11/,
/usr/share/X11,
/usr/X11R6/lib/X11
[править] xdmcp
I was looking around for a way to get gdm to work with vnc and the -inetd option but I couldn't find anybody who had done it. Eventually I got it to work ant thought you might like to hear my solution.
The problem seems to be that the xdmcp is turned off by default in gdm. Turning this on seems to do the trick.
The xdmcp section of my gdm.conf file looks like this: (note the Enable=1 and HonorIndirect=1 they used to be 0)
[xdmcp] Enable=1 HonorIndirect=1 MaxPending=4 MaxPendingIndirect=4 MaxSessions=16 MaxWait=30 MaxWaitIndirect=30 Port=177
My /etc/services has these lines:
vnc-800x600x16 5950/tcp vnc-1024x768x8 5951/tcp vnc-1024x768x24 5952/tcp
My /etc/inetd.conf has these lines:
vnc-800x600x16 stream tcp nowait nobody /usr/bin/Xvnc Xvnc -inetd
-broadcast -once -geometry 800x600
vnc-1024x768x8 stream tcp nowait nobody /usr/bin/Xvnc Xvnc -inetd
-broadcast -once -geometry 1024x768 -depth 8
vnc-1024x768x24 stream tcp nowait nobody /usr/bin/Xvnc Xvnc -inetd
-broadcast -once -geometry 1024x768 -depth 16
[править] CentOS 5.5 / RHEL 5.5
Для обеспечения безопасности VNC обычно настраивают слушать только localhost и используют совместно с SSH. Например в CentOS 5.5 VNC для безопасности настраивается так: /etc/sysconfig/vncservers
VNCSERVERS="10:user" VNCSERVERARGS[10]="-geometry 800x600 -nolisten tcp -nohttpd -localhost -RemapKeys='0xF3->0x79,0xD3->0x59'"
(Строка -RemapKeys='0xF3->0x79,0xD3->0x59' подменяет рyсские "у" и "У" на английские "y" и "Y". Иначе они печатаются при вводе как "o" и "O".)
Также используя например system-config-services не забудьте выставить запуск сервиса vncserver.
Далее используется SSH/SSL VNC клиент Enhanced TightVNC Viewer (SSVNC: SSL/SSH VNC viewer), которая позволяет использовать VNC поверх SSH.
[править] FreeBSD
Сначала в файле /etc/ttys:
ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm on secure
Почему именно xdm?
$ ldd /usr/local/sbin/gdm ldd: /usr/local/sbin/gdm: not a dynamic executable $ strings /usr/local/sbin/gdm | grep -q libXdmcp;echo $? 1
$ ldd /usr/local/bin/kdm ldd: /usr/local/bin/kdm: not a dynamic executable $ strings /usr/local/bin/kdm | grep -q libXdmcp;echo $? 1
$ ldd /usr/X11R6/bin/xdm | grep libXdmcp libXdmcp.so.0 => /usr/X11R6/lib/libXdmcp.so.0 (0x281ee000) $ strings /usr/X11R6/bin/xdm | grep libXdmcp libXdmcp.so.0
Затем:
$ ps waux | grep xdm $ sudo init q $ ps waux | grep xdm root 9260 83,5 0,3 140812 6484 ?? Rs 4:23 0:02,35 /usr/X11R6/bin/X -auth /usr/X11R6/lib/X11/xdm/authdir/authfiles/A:0-k root 9257 0,5 0,1 3016 2120 ?? S 4:23 0:00,02 /usr/X11R6/bin/xdm -nodaemon ttyv8 root 9261 0,0 0,1 3032 2212 ?? Ss 4:23 0:00,00 /usr/X11R6/bin/xdm -nodaemon ttyv8
Далее:
$ sudo vim /usr/X11R6/lib/X11/xdm/xdm-config
- для открытия 177 порта X deskop managerom добавляем
DisplayManager.requestPort: 177
- определяем список разрешенных для регистрации хостов. Для этого в файле /usr/X11R6/lib/X11/xdm/Xaccess
* #any host can get a login window * CHOOSER BROADCAST #any indirect host can get a chooser
Затем в inetd.conf добавьте:
vnc1 stream tcp nowait nobody /usr/X11R6/bin/Xvnc Xvnc -inetd -query localhost -depth 24 -geometry 640x480
И, конечно, в /etc/services:
vnc1 65002/tcp
Теперь в домашнем каталоге пользователя, который будет регистрироваться в системе:
$cat ~/.xsession #!/bin/sh gnome-session &
Теперь проверяем:
$ ps waux | grep inetd $ sudo /etc/rc.d/inetd start Starting inetd. $ ps waux | grep inetd root 9346 0,0 0,1 1492 1192 ?? Ss 4:38 0:00,01 /usr/sbin/inetd -wW -C 60
Проверим порт vnc1:
$ sockstat -4l | grep :65 root inetd 9346 7 tcp4 *:65002 *:*
Проверим порт xdmcp:
$sudo pkill -1 xdm $ sockstat -4l | grep :177 root xdm 9257 1 udp4 *:177 *:*
Создадим файл
$ sudo touch /usr/X11R6/lib/X11/xdm/Xstartup $ sudo chmod +x /usr/X11R6/lib/X11/xdm/Xstartup $ sudo sh -c 'echo \#\!\/bin\/sh > /usr/X11R6/lib/X11/xdm/Xstartup'
и. наконец:
$ vncviewer 192.168.15.242::65002 Connected to RFB server, using protocol version 3.7 Enabling TightVNC protocol extensions No authentication needed Desktop name "nobody's x11 desktop (fbsd1.unix.nt:2)" VNC server default format: 32 bits per pixel. Least significant byte first in each pixel. True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0 Using default colormap which is TrueColor. Pixel format: 32 bits per pixel. Least significant byte first in each pixel. True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
в результате чего получаем:
Если не открывается порт 177 ipv4 сделайте:
sysctl net.inet6.ip6.v6only=0
Настройка русских шрифтов:
FreeBSD как десктопная система
[править] ASPLinux 11
rpm -ihv /media/cdrom/ASPLinux/RPMS/vnc-server-4.1.1-10.1.i386.rpm
[root@linux3:~]# cat /etc/sysconfig/vncservers # The VNCSERVERS variable is a list of display:user pairs. # # Uncomment the lines below to start a VNC server on display :2 # as my 'myusername' (adjust this to your own). You will also # need to set a VNC password; run 'man vncpasswd' to see how # to do that. # # DO NOT RUN THIS SERVICE if your local area network is # untrusted! For a secure way of using VNC, see # <URL:http://www.uk.research.att.com/vnc/sshvnc.html>. # set -x VNCSERVERS="3:vnc" VNCSERVERARGS[2]="-geometry 1024x768 -query localhost -depth 24"
[править] Windows
В этом разделе будет описана настройка VNC-сервера на компьютере с ОС Windows 2003R2.
Данный компьютер находится в локальной сети и получает IP-адрес динамически.
Необходимо получать рабочий стол этого компьютера из Интернета. Для этого будет использована возможность portforwarding сервера openssh реализации под ОС Windows.
- Установка и настройка сервера openssh
- Получение и установка сервера openssh
Скачать инcталлятор можно с sourceforge.net
Затем его необходимо распаковать и запустить setupssh.exe
Соглашаемся с лицензией
Выбор компонентов установки
Место установки
Настройка меню "Пуск"
Нажимаем "Install". Затем будет предупреждение о необходимости создания файлов после инсталляции:
Завершение установки - "Finish"
и закончить этап установка со значениями по-умолчанию.
- Настройка сервера
Для настройки и первого запуска сервера необходимо открыть cmd и выполнить следующие команды:
cd "c:\Program Files\OpenSSH"
mkgroup -l >> etc/group
mkpasswd -l -u administrator >> etc/passwd
net start opensshd
Теперь можно проверить работу - зайти на какой-то сервер, использую команду
ssh username@hosname.domain.com
- Установка и настройка VNC-сервера
- Получение и инсталляция VNC-сервера
Скачать VNC-сервер можно с сайта RealVNC
В данной статье используется vnc-4_1_2-x86_win32.exe.
Первым, что необходимо сделать - запустить инсталляцию этого сервера.
Соглашаемся с лицензией
Определение места инсталляции
Выбор компонентов установки
Настройка меню "Пуск"
Настройка дополнительных опций установки
Прединсталляционное резюме - нажимаем "Install"
Во время настройки свойств VNC-сервера:
Необходимо настроить аутентификацию по паролям.
Выбираем VNC PasswordAuthentication и нажимаем "Configure"
Жмем "OK" два раза, затем Next и Finish.
В результате в трее должна появиться иконка:
- Проброс портов и проверка работы
Для того, чтобы пробросить порт необходимо выполнить в командной строке ОС Windows следующую команду:
ssh -f -N -R 5903:localhost:5900 clint@77.121.204.92 clint@77.121.204.92's password:
Для автоматизации этого процесса можно использовать скрипты. Пример одного из них ниже (.bat файл):
@ECHO ON @set /p a="Please, enter ip-address: " ssh -f -N -R 5903:localhost:5900 clint@%a%
Можно проверить на удаленной машине (в данном примере 77.121.204.92) результат выполнения вышеуказанной команды:
$ sudo netstat -lnp | grep 127.0.0.1:5903 tcp 0 0 127.0.0.1:5903 0.0.0.0:* LISTEN 6392/sshd: clint
Как видно - порт проброшен удачно. Теперь необходимо подключиться vncviewer`ом на этот порт:
$ vncviewer 127.0.0.1:3 VNC server supports protocol version 3.8 (viewer 3.3) Password: VNC authentication succeeded Desktop name "CLINT" Connected to VNC server, using protocol version 3.3 VNC server default format: 32 bits per pixel. Least significant byte first in each pixel. True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0 Using default colormap which is TrueColor. Pixel format: 32 bits per pixel. Least significant byte first in each pixel. True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0 Same machine: preferring raw encoding
- Если при попытке соединения vncviewer выдает ошибку:
VNC server supports protocol version 3.3 (viewer 3.3) VNC connection failed: Local loop-back connections are disabled.
То необходимо создать DWORD ключ с именем AllowLoopback и значением hex 1 в ветке HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\WinVNC4
- Дополнительная информация к разделу:
[править] Дополнительная информация
- Giving your Xen instances a working X setup - GDM в VNC
- http://wiki.xensource.com/xenwiki/XenDemoLaptop
- x11vnc: a VNC server for real X displays
- FreeBSD Handbook
- Настройка и использование XDMCP В FreeBSD
[править] Материалы по тонким клиентам и системам удалённого доступа на Xgu.ru
- Тонкие клиенты
- RDP (RDP 6)
- rdesktop
- Бесшовная виртуализация
- VNC
- Терминальные решения Microsoft Windows Server 2008
Полигоны: