"Программист — это профессиональный конвертер галлюцинаций заказчика в жесткую формальную систему"
Dec 242012
 

Для удобства управления нашим сервером сделаем доступ к его графическому интерфейсу. По умолчанию в Ubuntu уже есть VNC сервер, его надо только включить.

Делается это в Preferences->Remote Desktop

Ubuntu_rdp_1

В окне настроек достаточно поставить нужные галочки и ввести пароль (можно не вводить, но мне так спокойней)

Ubuntu_rdp_2

После этого можно уже коннектиться к нашему серверу используя, например, TightVNC.

Ubuntu_rdp_3

Вводим пароль

Ubuntu_rdp_4

И получаем доступ к нашему рабочему столу

Ubuntu_rdp_5

Подключение идет по порту 5900, если Вы не настраивали что-то другое.

Но есть некоторые проблемы. Во первых, не работает переключение раскладок, косяки со шрифтами, сворачиванию всех окон, например при нажатии D и возможно что-то еще. Лечить это симптоматически очень непросто и как правило помогает не всем. Так что перейдем к установке RDP, к которому можно зацепиться стандартным виндовым клиентом. В нем решено большинство проблем, описанных выше.

Установка xRDP на Ubuntu

И так, первое, что нужно сделать – установить xrdp из репозиториев.

sudo apt-get install xrdp

И запустить его

sudo /etc/init.d/xrdp start

Все можно  соединяться обычным RDP-клиентом из-под Windows. Скринов не будет Smile т.к. мы сразу перейдем к фиксу возникших багов, а они, вероятнее всего есть. Т.е. можно соединиться, но опять же нельзя поменять раскладку, d – сворачивает все окна, сессия VNC после выхода не отключается и подключиться к ней с нова возможности нету и т.п., а все потому, что коннектимся мы все равно как xVNC.

Добавляем X11rdp к xRDP

Следующим шагом будет установка нового xRDP – X11RDP. Для этого надо скачать его исходные коды и скомпилировать их самостоятельно. Для этого установим все необходимые пакеты

sudo apt-get install subversion gcc libice-dev pkg-config zlib1g-dev cvs autoconf libtool libssl-dev libpam0g-dev libx11-dev libxfixes-dev xfonts-base

И теперь перейдем к скачиванию и сборке X11RDP (каталог Install в нашей домашней директории мы создали при установке proxy-сервера)

cd ~/Install
mkdir X11rdp
cd X11rdp
svn co svn://server1.xrdp.org/srv/svn/repos/main/x11rdp_xorg71
mkdir /usr/local/X11rdp
cd x11rdp_xorg71
sh buildx.sh /usr/local/X11rdp

Теперь сделаем символьные ссылки для xRDP

ln -s /usr/local/X11rdp/bin/X11rdp /usr/local/bin
ln -s /usr/share/fonts/X11 /usr/local/X11rdp/lib/X11/fonts

Теперь добавим X11rdp в конфиги xRDP, чтобы у нас появился новый тип коннекта. Исправляем /etc/xrdp/xrdp.ini

Добавляем новую секцию

[xrdp0]
name=sesman-X11rdp
lib=libxup.so
username=ask
password=ask
ip=127.0.0.1
port=-1

Но, к сожалению “из коробки” это не заработало, т.к. версия xrdp в репозитории Ubuntu не самая свежая, а вот версия X11rdp новая и между собой они дружат плохо. Т.е. Вы можете попробовать соединиться, используя новый метод

Ubuntu_rdp_6

Но пока получите только цветные полосы на экране.

Так что теперь мы как “взрослые” юниксоиды пойдем и соберем свой собственный XRDP с блэкджеком и … с переключением раскладки и нормальными сессиями.

Компиляция XRDP из репозитория GIT

Для начала установим GIT

sudo apt-get install git libssl-dev libpam0g-dev

Теперь УДАЛИМ xrdp. Не удивляйтесь, сейчас мы соберем его по новой, от старого XRDP останутся только юзер, группа и скрипты автозапуска.

sudo apt-get remove xrdp

Т.к. мы не указывали опцию –purge, то все, что нам нужно остается в системе

Перейдем к скачиванию и компиляции самого “свежего” xRDP

cd ~/Install
mkdir xrdp
cd xrdp
git clone https://github.com/FreeRDP/xrdp.git xrdp.git

Скрестили пальцы и начали

cd xrdp.git
git checkout 4cd0c118c273730043cc77b749537dedc7051571
./bootstrap
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make

Ждем, довольно долго, компиляции и устанавливаем xRDP в правильное место, где ему и положено быть

sudo make install

Займемся RSA ключами, необходимыми для создания шифрованных сессий

sudo su -
 mkdir /usr/share/doc/xrdp
 mv /etc/xrdp/rsakeys.ini /usr/share/doc/xrdp/
 chmod 600 /usr/share/doc/xrdp/rsakeys.ini
 chown xrdp:xrdp /usr/share/doc/xrdp/rsakeys.ini

Все так же, оставаясь под root (после sudo su –)

cd /etc/xrdp
mv startwm.sh startwm.sh.BACKUP
ln -s /etc/X11/Xsession /etc/xrdp/startwm.sh

Теперь завершим инсталляцию изменением фала настроек /etc/init.d/xrdp (я правил используя внутренний редактор MC), в зависимости, от того, что у Вас сейчас в этом файле добавьте/измените строки, чтобы они выглядели так:

PIDDIR=/var/run
SESMAN_START=yes

Т.к. мы все еще под root – запускаем xRDP

/etc/init.d/xrdp start

Проверяем, что он запустился

ps ax | grep rdp

И если все хорошо, и в выводе ps присутсвуют строки с нашим сервером, то выхоим из аккаунта root

exit

Ну и пробуем соединиться

Ubuntu_rdp_7

(порт 5901, это только у меня так, т.к. я коннекчусь к домашнему серверу через SSh-туннель и стандартный порт 3389 проброшен на 5901)

Раньше приходилось еще указывать ограничение цветности 16 бит (делается в опциях клиента, но сейчас все работает и с 32 бит у меня)

Ubuntu_rdp_8

 

Теперь можно поудалять все накаченные исходники, если есть желание. Но и без этого мы получили полнофункциональный RDP доступ к нашему рабочему столу Ubuntu

Поделиться в соц.сетях

  40 Responses to “Делаем свой собственный сервер на Ubuntu. Удаленный рабочий стол – RDP из Windows и Linux”

  1. Круто, спасибо!!!

  2. Супер! Столько всего перелопатил за неделю… Эта статья наконец привела к желаемому – раскладка и все остальное заработало! СПАСИБО!!!

    • Рад, что помогло 🙂 Сам с этим намучался.

      • Появился еще вопрос на эту тему. Попробую по порядку.
        На машине стоит Минт14. Интерфейс – корица. Удаленный стол получается Гном. Это не беда – корицу выбрал исключительно из за ее похожести на гнома.
        Беда в другом. Удаленный стол не подхватывает локаль! Что то поковырял (не запомнил что делал) – меню стало русским. Создал еще пользователя – опять удаленно английская локаль… С Линуксом знаком с начала года, так что даже не знаю куда себя отнести – к полным чайникам или уже немного продвинувшимся….

        • Только что сам же и решил проблему. Расскажу как – вдруг кому то поможет.
          Чтобы полусить русскую локаль на удаленном столе надо, создав пользователя, выбрать английский язык! Потом снова русский. Почему то стоящий по умолчанию русский система принимает за английский. Надо обязательно явно задавать нужную локаль.
          Еще раз спасибо – только благодаря этому сайту я запустил свой первый линукс-сервер…

          • Я всегда стараюсь оставить локаль английскую и просто добавить язык для раскладки, а то переводы пунктов меню иногда вводят в ступор.

  3. Oracle Linux 6.4_86_64 Так все хорошо начиналось…
    после 5 минут вывода на экран команда
    sh buildx.sh /usr/local/X11rdp
    выплюнула
    ….
    checking for gzopen in -lz… no
    configure: error: *** zlib is required
    error xfont
    и что с этим делать?

  4. Oracle Linux 6.4_86_64 Так все хорошо начиналось…
    yum install subversion gcc libice-dev pkg-config zlib1g-dev cvs autoconf libtool libssl-dev libpam0g-dev libx11-dev libxfixes-dev xfonts-base
    выплюнула
    ….
    Package subversion-1.6.11-9.el6_4.x86_64 already installed and latest version
    Package gcc-4.4.7-3.el6.x86_64 already installed and latest version
    No package libice-dev available.
    No package pkg-config available.
    No package zlib1g-dev available.
    Package cvs-1.11.23-15.el6.x86_64 already installed and latest version
    Package autoconf-2.63-5.1.el6.noarch already installed and latest version
    Package libtool-2.2.6-15.5.el6.x86_64 already installed and latest version
    No package libssl-dev available.
    No package libpam0g-dev available.
    No package libx11-dev available.
    No package libxfixes-dev available.
    No package xfonts-base available.
    Nothing to do

    и что с этим делать?

  5. Попытка найти подобный пакет …
    [root@ves7 x11rdp_xorg71]# yum search zlib
    Loaded plugins: refresh-packagekit, security
    ============================== N/S Matched: zlib ===============================
    jzlib.x86_64 : JZlib re-implementation of zlib in pure Java
    ghc-zlib.x86_64 : Haskell compression and decompression library
    jzlib-demo.x86_64 : Examples for jzlib
    jzlib-javadoc.x86_64 : Javadoc for jzlib
    mingw32-zlib.noarch : MinGW Windows zlib compression library
    mingw32-zlib-static.noarch : Static libraries for mingw32-zlib development.
    perl-Compress-Raw-Zlib.x86_64 : Low-Level Interface to the zlib compression
    : library
    perl-Compress-Zlib.x86_64 : A module providing Perl interfaces to the zlib
    : compression library
    perl-IO-Zlib.x86_64 : Perl IO:: style interface to Compress::Zlib
    perl-POE-Filter-Zlib.noarch : POE filter wrapped around Compress::Zlib
    zlib.i686 : The zlib compression and decompression library
    zlib.x86_64 : The zlib compression and decompression library
    zlib-devel.i686 : Header files and libraries for Zlib development
    zlib-devel.x86_64 : Header files and libraries for Zlib development
    zlib-static.x86_64 : Static libraries for Zlib development
    zlibrary-devel.i686 : Development files for zlibrary
    zlibrary-devel.x86_64 : Development files for zlibrary
    zlibrary-ui-gtk.x86_64 : GTK+ interface module for ZLibrary
    zlibrary-ui-qt.x86_64 : Qt4 interface module for ZLibrary
    ghc-zlib-devel.x86_64 : Haskell compression and decompression library
    : development files
    perl-IO-Compress-Zlib.x86_64 : Perl interface to allow reading and writing of
    : gzip and zip data
    python-gzipstream.noarch : Streaming zlib (gzip) support for python
    zlibrary.i686 : Cross-platform GUI library
    zlibrary.x86_64 : Cross-platform GUI library

    Name and summary matches only, use “search all” for everything.

    подвела черту под мечтой….

  6. Товарищи, у меня стоит kubuntu 13.04 замандило поставить юнити… после установки юнити когда цепляюсь по rdp запускается рабочий стол юнити причем с кучей косяков. Удалил юнити, его нет ни в выборе при логине и пакетов его нет вроди как нигде уже, но все равно при коннекте по rdp грузится не KDE а юнити, точнее уже не юнити а пустой рабочий стол.
    Скажите возожно в настройках xrdp где-то надо поменять чтобы грузилось вновь KDE?

    • На сколько я помню – там в конфиге XRDP есть строчки про менеджера оконного:
      /etc/xrdp/xrdp.ini
      и там же можно вытсавить дефолтный

      • Решилось так
        echo “/usr/bin/startkde” > ~/.xsession
        sudo gedit /etec/xrdp/startwm.sh
        #. /etc/X11/Xsession
        . /home//.xsession
        sudo /etc/init.d/xrdp restart

        • Спасибо
          Мне для xfce достаточно было сделать:
          ln -s /usr/bin/xfce-session ~/.xsession

  7. Не переключается раскладка в сессии. Совсем. И ничем не могу победить такое поведение.
    Если логиниться не по rdp, а напрямую у компа, все нормально. Значок раскладки клавиатуры висит в трее.
    как только по rdp – даже значка раскладки нет.
    перерыл кучу информации в инете и тишина.
    как победить????

    Ubuntu Linux 13.04

    • забыл дополнить. пакеты все взяты из репозитория.

      • уже из исходников пересобрал даже 🙂
        не помогло 🙁

        • А именно XRDP стоит? Из репозитория?

          • оттуда, ага.
            в общем, я плюнул (надоело рыть интернеты) и стал использовать связку putty + xming.
            и запускаю любое графическое приложение откуда хочу.

            • Тоже вариант )) Я делал XRDP, навреное даже, из чистого интереса. Но все завелось, так и оставил. Ну иудобно, что с рабочего компа штатными средставми до домашнег осервера хожу

              • если вдруг! появится информация как победить эту беду ))) буду ждать комментария здесь )

                • Вот про эту беду я и писал выше. Надо создать пользователя, выбрав аглицкий язык. Выбрать до задания пароля. Затем задать пароль.Войти вновь созданным юзером и создать русскую локаль. Затем снова админом и вернуть русский язык юзеру. Кажется так, но уже мог и подзабыть…

  8. Вопрос: А мультиюзерность поддерживается? т.е. жена непосредственно за компом, а я по RDP.

    • Вообще созадется нвоая сессия на каждое подключение. Так что сможете.

      • Спасибо. 🙂

        • Все сделал как написанно, но вот не задача верхнюю панель Gnome не отображает (юнити тоже) ну и верхнюю панель наутилуса с крестиком. [img]http://judges.cwars.ru/img/images/2013101800.png[/img] подскажите куда рыть.

          • А случайно всякие Compiz и прочие красивости не включены?

          • Ну и есть вот такая бага Bug #846407 – зыучит она как раз xrdp is not able to transmitt unity desktop correct – different clients
            Вроде как он не починен, но в багтреке предлагают какие-т оварианты решения – https://bugs.launchpad.net/ubuntu/+source/xrdp/+bug/846407

            • Спасибо, попробую. Compiz отключен, в общем разные варианты пробовал.

              • Почитатйте трекер. Может что-то поможет. Сам то я с эти не столкнулся, так что и личного опыта в борьбе с такой напастью нету

  9. Чтобы пофиксить проблемы с русской локалью, надо в startwm.sh добавить строки в начало файла:
    if [ -r /etc/default/locale ]; then
    . /etc/default/locale
    export LANG LANGUAGE
    fi

    • в этом файле уже есть эти строки. Ubuntu Linux 14.04 LTS

      startwm.sh [—-] 0 L:[ 1+ 6 7/ 9] *(97 / 118b) 0010 0x00A [*][X]
      #!/bin/sh

      if [ -r /etc/default/locale ]; then
      . /etc/default/locale
      export LANG LANGUAGE
      fi

      . /etc/X11/Xsession

  10. При проблемах с подключением к старым сессиям можно попробовать это: http://habrahabr.ru/post/189074/

  11. Собирал на Ubuntu 14.04 не завелось, точнее виндовый RDP не конектится

  12. Тоже сделал как написано в Kubuntu 14.04 с винды не подключается клиент

  13. Тоже попробовал собрать на Ubuntu 14.04 – серый экран и все. Гном не грузится что ли…

  14. Спасибо автору за статью! Хорошо всё описал) Могу добавить пару слов от себя. Наша фирма не использует майкросовтовский сервер, мы обошлись более бюджетным-Thinstuff XP/VS Terminal Server . Это полноценный терминальный сервер, но стоит гораздо дешевле. Зачем же тогда переплачивать? И вот и я думаю, что не зачем. Вот сайт, может кому и понадобится http://thinstuf.ru/

  15. Мучаюсь уже целую неделю почти. /По этой инструкции не получается.. уже перепробывал несколько разных образов юбунту. на разных был разный эффект от проделанных манипуляций, но не заработало как надо.. Автор.. подскажи на каком точно дистрибутиве это проделывал…

  16. Чаще всего приводит к серому экрану.. на версии ubuntu 12.04 lts серый экран ушел.. но стал доступен только голый рабочий стол безо всяких меню и доступа к терминалу.. можно даже папки и файлы создавать……. помоги

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)