VNC

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.

Billets.jpg

    Эта страница, пока что — сборище заготовок.
    Лучше не читайте её, если не хотите потратить время впустую. А почитайте вместо этого что-нибудь другое.

Содержание

[править] 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

First.png

в результате чего получаем:

Second.png


Если не открывается порт 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



1ssh.png
Соглашаемся с лицензией
2ssh.png
Выбор компонентов установки
3ssh.png
Место установки
4ssh.png
Настройка меню "Пуск"
5ssh.png
Нажимаем "Install". Затем будет предупреждение о необходимости создания файлов после инсталляции:
6ssh.png
Завершение установки - "Finish"
7ssh.png

и закончить этап установка со значениями по-умолчанию.

    • Настройка сервера

Для настройки и первого запуска сервера необходимо открыть 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. Первым, что необходимо сделать - запустить инсталляцию этого сервера.
1vnc.png
Соглашаемся с лицензией
2vnc.png
Определение места инсталляции
3vnc.png
Выбор компонентов установки
4vnc.png
Настройка меню "Пуск"
5vnc.png
Настройка дополнительных опций установки
6vnc.png
Прединсталляционное резюме - нажимаем "Install"
7vnc.png

Во время настройки свойств VNC-сервера:


8vnc.png
Необходимо настроить аутентификацию по паролям.
Выбираем VNC PasswordAuthentication и нажимаем "Configure"
9vnc.png
Жмем "OK" два раза, затем Next и Finish. В результате в трее должна появиться иконка:
10vnc.png

  • Проброс портов и проверка работы

Для того, чтобы пробросить порт необходимо выполнить в командной строке ОС 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 127.0.0.1:3

  • Если при попытке соединения 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
regedit


[править] Дополнительная информация

[править] Материалы по тонким клиентам и системам удалённого доступа на Xgu.ru

Полигоны:

Источник — «http://xgu.ru:81/wiki/VNC»