вторник, 16 марта 2010 г.

Удаленный "рабочий стол".

Удаленное управление - это довольно большая тема. Ну ясное дело, что многие работающие под nix (win тут конечно же не рассматривается, не в моем блоге) системами вполне себя не плохо чувствуют с ssh, но иногда бывает, что надо получить доступ именно к графической среде. И вот тут возникает вопрос "как". Нет, проблем-то в общем-то нет, но может не все и не обо все этом знаю. ;)

Вариантов тут собственно несколько. И первый это конечно же стандартный протокол "иксов". Варианты тут тоже есть. Либо отдельный X-сервер запустить, либо что-то типа Xnest, то есть тоже отдельный сервер, но уже под работающим сервером. Все бы ничего, но в этом случае вы не сможете возобновить сессию, если она оборвалась, или вам надо временно отключится а потом подконнектится обратно. То есть этот вариант можно рассматривать только как постоянно работающий терминал.

Второй вариант - это хорошо известный vnc. Плюсы очевидны: открытый протокол, многоплатформенность, есть клиенты практически для всех систем, даже есть вариант java-плагина в броузере.

Вариантов использования тут тоже два: первый, это запуск на машине vnc сервера и коннект к нему. Под ним запустится ваша рабочая среда и вы будите работать как обычно, только на удаленном терминале.
Второй вариант, это когда вам надо получить доступ к уже запущенной X-сессии аля винда. Тут нас спасет специальный vnc сервер, который называется x11vnc. Если у вас уже работающий сервер запущен как нулевой, то зайдя на машину удаленно и сделав:

export DISPLAY=:0 && x11vnc

мы получим нужный результат. Теперь любым клиентом, например xvncviewer коннектимся к нашей машине:

xvncviewer host.name

и получаем наш рабочий стол. :) Для любителей секьюрных соединений можно использовать например ключ -local и завернуть все внутрь ssh. Так же, что бы x11vnc не оканчивал свою работу после дисконнекта можно использовать ключ -forever.

В общем vnc я уже использую очень давно и оно меня вполне устраивала, хотя и есть некоторые проблемы при переключении клавиатуры на другой язык, но они довольно мелкие и терпимые. Но вот недавно я решил попробовать x2go.

Решение мне это понравилось во первых комплексным решением. Ибо оно охватывает не только мелкие нужды типа моих, но и довольно большие решения, аля "энтерпрайз" с блекджеком и шлюхами LDAP-ом и прочими наворотами. Вкратце о наворотах:
  • аутентификация при помощь карт, usb токенов, паролей
  • LDAP менеджмент: пользователи, пароли и прочее
  • вроде бы можно даже на SunRay использовать, но точно не скажу
  • возможность использования локальных файловых ресурсов на удаленном терминале
  • различные степени и методы компрессии
  • "проброс" звука с удаленного терминала на локальный
В общем штука довольно приятная. Единственно, что я не нашел, это возможно ли подключение к уже запущенному X серверу аля x11vnc. Хотя для моих целей мне это надо очень редко, можно и по старинке пользоваться раз в год. ;)

Серверов есть 2 версии: для, так сказать, домашнего пользования, x2goserver-one (облегченная версия), и x2goserver - полная, с поддержкой LDAP и прочих наворотов. Полную не пробовал, дома пока хватает и версии one. :)

Клиенты, как я уже говорил, есть под linux/windows/macos и вроде даже под какие-то мобильные устройства. Есть версии с gui, есть - cli.


В целом все сделано довольно приятно, работает шустро, даже на довольно плохих каналах, хотя скажу честно модемное соединение не пробовал. :) Глюков с раскладкой клавы, которые были замечены за vnc тут вроде пока не проявлялось. Будем тестить дальше. :)