Допустим есть у нас где-то комп с линуксом и каким-то desktop environment-ом, например, KDE. Вот пришли мы утром, поработали за этим компом, понаоткрывали кучу окошек с разными интересными сайтами и ушли в конце дня домой. А придя домой, вспомнили, что надо срочно дочитать один из интересных сайтов, да, вот незадача, адреса его не помним. И, вполне логично, начинаем задумываться как бы это подключиться из своей домашней винды к X-серверу по аналогии, как это можно сделать rdesktop-ом или Radmin-ом для хождения на виндовый рабочий стол. Решение есть. Причём, очень простое. Называется x11vnc. Подразумевается, что доступ по SSH к линуксовому компу у нас имеется. Пошаговое решение задачи доступа из windows к рабочему столу linux.
- Устанавливаем пакет x11vnc:
$ sudo yum install x11vnc
-
Читаем описание:
$ rpm -qi x11vnc | sed -r '/Summary/,$ !d' Summary : VNC server for the current X11 session Description : What WinVNC is to Windows x11vnc is to X Window System, i.e. a server which serves the current X Window System desktop via RFB (VNC) protocol to the user. Based on the ideas of x0rfbserver and on LibVNCServer it has evolved into a versatile and productive while still easy to use program.
-
Запускаем программу:
$ x11vnc
Тут она на консоль вывалит кучу текста, из которого самой полезной является информация о порте. По умолчанию используется TCP-порт 5900.
- На винде устанавливаем программу TigerVNC
-
Запускаем putty, подключаемся к линуксу, предварительно сделав локальный проброс порта 5900, логинимся:
-
Запускаем vncviewer.exe, в качестве сервера указываем 127.0.0.1:
И далее в окошке tigervnc видим наш вожделенный линуксячий рабочий стол :) В принципе можно обойтись и без putty, но с ним надёжнее, так как трафик по Интернету будет бегать шифрованным.
Есть и другой подход. Стандартная оконная система для Linux – это X Window System (в простонародье – "иксы"). Она занимается отрисовкой графических элементов и взаимодействием с устройствами ввода-вывода. X Window System имеет прозрачную клиент-серверную архитектуру: оконная система выполняет роль сервера, а графические приложения – соответственно, роль клиентов. Клиенты подключаются к серверу и взаимодействуют с ним для отрисовки и для получения событий от мыши и клавиатуры. Оконная система может находиться на одном компьютере, а графическое приложение – на другом. И приложение может связываться с X Window System по сети. То есть можно запустить приложение на удалённом компьютере, настроив его отображение (отрисовку) на том компьютере, за которым Вы в данный момент находитесь. А также запустить программу на одном удаленном компьютере с отрисовкой элементов интерфейса на другом удаленном компьютере :) Существуют также X-серверы и для Windows, например XMing. Так вот с помощью этого XMing-а и включённого "X11 forwarding" в putty можно запросто заставить линуксячие приложения отрисовываться на рабочем столе Windows :) В подробностях опишу это, может быть, в какой-нибудь из последующих статей.
Если на сервере 2 монитора, то по умолчанию vncviewer на клиентской стороне отображает сразу оба в одном окошке, что редко бывает удобно. Чтобы такой беды не было, надо сервер запускать с параметром -clip, как-то так:
x11vnc -display :0 -clip xinerama0
"xinerama0" означает что хотим подключаться к primary display. Если же хотим к secondary, то нужно указывать "xinerama1".
Это нормально работает если второй монитор как бы расширяет рабочее пространство (то есть окна можно тягать с одного на второй и обратно). Если же второй монитор дублирует первый, то, скорей всего, нужно будет играться с параметром -display, а не -clip.
Почерпнуто отсюда: http://www.karlrunge.com/x11vnc/faq.html#faq-xinerama