Установка и настройка x2go клиент-сервера. Терминальные решения и удаленный доступ в Ubuntu. Аналог NX Nomachine в Ubuntu.

В данной статье я расскажу про установку и настройку клиент-сервера x2go - форка FreeNX 3.5, который можно использовать для организации терминального сервера или для удаленного доступа и управления удаленным компьютером.


Как я и обещал в статье про Remmina сегодня я расскажу про технологию удаленного доступа NX.

Предыстория.

Есть такая компания, как NoMachine. Она разрабатывает протокол удаленного доступа NX, более подробно об этой компании и технологии можно почитать на википедии:

Стоит упомянуть, что клиенты для доступа по технологии NX от NoMachine бесплатные, а вот серверные решения и платные и стоят очень много тысяч долларов.

Данная компания поддерживала OpenSource решение FreeNX, можно почитать опять же на википедии:

Но в один момент NoMachine забила на развитие свободного проекта FreeNX и в итоге данный продукт не развивался, завис на версии 3.5.

Так как NX протокол намного лучше и быстрее медленного и "ужасного" vnc.
Нашлись те, кто форкнул проект FreeNX 3.5 и назвали это x2go.

То есть, x2go это форк FreeNX. Хотя FreeNX и можно поставить, но это такой геморрой, а x2go усиленно разрабатывается и добавляются новые возможности и исправляются ошибки.
Кроме того x2go заводится "в пол пинка".

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

Пришло время исправить это. :)

Обзор клиента и сервера x2go.

В общих словах, что же собой представляет это x2go. Демонстрацию различных вариантов работы продемонстрирую ниже после пунктов установки.

На компьютере, к которому будут обращаться другие компьютеры устанавливается сервер x2go. Это могут быть только Linux системы.

На компьютерах, которые будет подключаться к серверу, устанавливается клиент программы x2go. Клиент программы есть для Windows, Linux, MacOS.
Еще они занимаются версией для Андроид, но она не готова даже близко. 
Доступна версия и для ChromeBook. Но так как у меня нет ни MacOS ни ChromeOS, то в статье будет рассказано только про подключение с Ubuntu на Ubuntu и c Windows на Ubuntu.

Из особенностей:
  • Подключение к удаленному компьютеру производится по ssh.
  • Передача звука, расшаривание принтеров.
  • Можно запускать просто отдельное приложение на удаленном компьютере.
  • Можно подключиться и управлять удаленным компьютером (типа TeamViewer).

Установка сервера x2go в Ubuntu.

Во-первых, не обязательно устанавливать x2go сервер на Ubuntu Unity, если собираетесь использовать его как толстый клиент.

Запуск x сессии Unity и Gnome3 не работает пока что, можно запустить либо отдельное приложение, либо управлять удаленным компьютером (аналогично как в TeamViewer).
Если Вы хотите именно этого, то тогда стоит ставить.

Поэтому в качестве терминального сервера лучше использовать сборки Ubuntu с XFCE, LXDE, Mate. Не советую ставить KDE и Cinnamon, так как они едят много оперативы, что для терминального сервера очень чувствительно (не один же пользователь подключаться будет одновременно).

Также можно поставить XFCE или LXDE на компьютер с Ubuntu.
Установка LXDE:
apt-get install lubuntu-desktop
Установка XFCE:
apt-get install xubuntu-desktop
Итак, определились с использованием. Ставить сам сервер очень просто.
Нужно доставить зависимости:
sudo apt-get install software-properties-common python-software-properties
Теперь добавляем репозиторий и устанавливаем из него следующие пакеты:
sudo add-apt-repository ppa:x2go/stable
sudo apt-get update
sudo apt-get install x2goserver x2goserver-xsession
Для использования горячих клавиш, нужно доставить следующий пакет.
Если у вас Mate, нужно поставить следующий пакет:
sudo apt-get install x2gomatebindings
Если у вас Lxde:
sudo apt-get install x2golxdebindings
Всё. После того, как установили эти пакеты, сервер установлен и ничего не надо настраивать.

Вам просто нужно узнать ip сервера и можно подключаться удаленно через клиент x2go.

Кроме того, вы можете создать пользователей для подключения к терминальному серверу с x2go. (Не под одним же пользователем всем подключаться).
Я писал подробные статейки (в LXDE и XFCE также как в Unity):
Управление пользователями в Ubuntu - часть 1.
Управление пользователями в Ubuntu - часть 2.

В консоле пользователь добавляется следующей командой (username - это имя пользователя по вашему вкусу):
sudo adduser username
И следовать инструкциям в терминале.


Я описал установку для Ubuntu. Но x2go сервер можно установить и для других дистрибутивов, следуйте инструкциям с официального сайта:
http://wiki.x2go.org/doku.php/doc:installation:x2goserver

Установка клиента в Windows 8.1 и Ubuntu.

Установка клиента x2go в Ubuntu.

Ничего сложного нет, добавляем тот же репозиторий, через  который устанавливали сервер x2go, и ставим из него пакет клиента:
sudo apt-add-repository ppa:x2go/stable
sudo apt-get update
sudo apt-get install x2goclient
В установленных приложениях можно найти x2go клиент и можно подключаться. (Об этом ниже описано подробнее в демонстрации работы).

Установка клиента x2go в Windows 8.1.

Также ничего сложного, есть установочный пакет на офф. сайте.

http://wiki.x2go.org/doku.php/doc:installation:x2goclient

В секции для Windows скачиваем exe файл:



Устанавливаем программу. Потребуются права администратора. Всё. Можно подключаться.

Кроме того, клиент доступен еще для многих других дистрибутивов Linux и других ОС, просто следуйте инструкции на офф. сайте (англ.):
 http://wiki.x2go.org/doku.php/doc:installation:x2goclient

Демонстрация работы x2go.

Использование как терминального сервера.

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

На компьютере с x2go сервер должна быть установлена легкое окружение рабочего стола, типа XFCE или LXDE, ну или MATE.
Нужно создать пользователей для каждого, кто будет одновременно работать с терминальным сервером.
Узнаем ip сервера и открываем клиент.

Открываем клиент и создаем новое подключение.
Пример создания подключения и соединение с сервером в Windows:


Откроется окно создания "Новой сессии":


Нужно ввести:
  • Имя сессии - какое хотите.
  • Хост - ip сервера, к которому подключаться.
  • Пользователь - имя пользователя.
  • Тип сессии - здесь выбираем оболочку рабочего стола. В примере XFCE.

В принципе всё. Можно подключаться. Но на остальных вкладках можно настроить еще много всего.
К примеру разрешение экрана:


А также можно настроить, нужен ли нам звук:



Это всего можно отредактировать и позднее. Жмём "Ок" и соединение появится в списке:


Теперь щелкаем по нужному соединению из списка (сейчас оно одно) и появится окно с вводом пароля:


Если всё правильно, то запустится удаленная сессия в окне:


Вот таким образом это работает.

Использование для запуска программы на удаленном компьютере.

Этот случай, когда есть ресурсоёмкое приложение, к примеру, какое то IDE и нужно подключаться к нему, чтобы не забивать ресурсы своего маломощного компьютера. Это как пример, возможно какие-то другие есть причины. Но это очень удобно. Делается это следующим образом.

И важное замечание, что здесь окружение рабочего стола вообще не играет роли. Поэтому можно подключаться к компьютеру с Unity или KDE, вообще роли DE не играет.

Всё то же самое, как в предыдущем варианте, создаём новую сессию и вводим
  • Имя сессии - какое хотите.
  • Хост - ip сервера, к которому подключаться.
  • Пользователь - имя пользователя.
Только теперь в пункте Тип сессии нужно выбрать "Приложение" и ввести путь до приложения или команду запуска приложения:


В примере это Firefox, который в итоге и запускается:


Вот таким образом можно запускать приложения с удаленного компьютера без запуска X-сессии.

Использование для удаленного доступа компьютером (как в TiemViewer).

Есть и такой вариант удаленного доступа. Просто подключаемся к сессии удаленного компьютера и управляем им, либо смотрим демонстрацию экрана.

В таком случае можно на обоих компьютерах ставить как клиент, так и сервер.
Окружение рабочего стола не имеет значение и можно подключаться к друг другу, как вариант, конечно.

Либо еще можно установить x2go сервер на компьютерах в офисе, оперативы они едят мало и админ будет подключаться с помощью клиента к рабочим компам, тоже как вариант.

Всё делается тоже самое, создается новое подключение вписываются данные, только в тип соединения выбираем:


Выбираем:
Тип сессии - Соединение с локальным десктопом.

Всё. Подключаемся, будет спрошено:


Выбираем Полный доступ, если хотим управлять удаленным компьютером, откроется запущенный сеанс:


Получили доступ, управляем и делаем что хотим с удаленным компом.

Вот и всё.

Программа умеет гораздо больше. Показал самое основное.

Поделиться:

Если у Вас возникли вопросы.

Приглашаю задавать их на сервисе вопросов и ответов: Ask LinuxRussia.com.
Там Ваши вопросы не потеряются и Вы быстрее получите ответ, в отличие от комментариев.

18 коммент. :

  1. После прочтения статьи остается вопрос: Если потребуется с компа под управлением Ubuntu подключиться к компу под управлением Windows, установка упомянутого в статье клиента на комп с Windows проблему не решит никак? Из доступных по прежнему только Remina по RDP?

    ОтветитьУдалить
    Ответы
    1. C x2go да, именно так. Серверная версия только для Linux систем.

      У Nomachine есть бесплатный клиент для многих систем (NX):
      https://www.nomachine.com/download

      Но там ограничение, что к компьютеру может подключиться одновременно только один компьютер. Следовательно это просто связка 1 к 1. Удобная штука в своем роде конечно.
      Про неё будет следующая статья.
      В качестве терминального сервера NX от NoMachine стоит, начиная от 800 баксов. Можно посмотреть цены в Enterprise пункте на сайте.

      Удалить
    2. Ну а из бесплатного rdp и remmina. Как по мне, то rdp вообще самый лучший, для подключения к Windows машине.
      Можно vnc, но это жуть медленная и глючная, плюс надо мучаться настраивать, править конфиги. Пробовал, не хочется даже рассматривать.

      Удалить
  2. "После того, как установили эти пакеты, сервер установлен и ничего не надо настраивать."
    Это как?) А как же роутер/маршрутизатор поконфигурить?) А то предвижу реплики: "Вооот я с работы домой не могу зайти по вашей статье статья фуфло"))
    Имею дело с NX NoMachine, вещь не без глюков конечно, но в общем и целом - маст хэв(если денег не жалко)))

    ОтветитьУдалить
    Ответы
    1. Можно добавить, что нужен vpn или статический ip сервера, к которому подключаетесь.
      А нет желания поделиться опытом использования NX NoMachine :)?

      Удалить
    2. мой опыт сводится к Зашел, Залогинился, Работай в юниксовой сессии)
      Сами мы серверную часть не поднимали, мы только пользуемся. А в NX-клиенте нет никаких сложностей, все интуитивно понятно. Разве что нужно было отдельно нарыть в интернетах горячие клавиши, чтобы например Alt+tab пробрасывался в удаленную сессию, ну и оказывается нельзя пускать все это дело в фуллскрине, если твоей локальной системой является винда( Печаль. Еще периодически сохраненные сессии могут не восстанавливаться. Жмешь на Resume, вроде загрузился, а через минуту все падает с Connection timeout. Тогда приходится создавать новую сессию, а старую убивать, а это обидно, особенно когда там уже открыты нужные приложения и все готово к работе.
      По теме статьи: работа вроде ведется на 22-ом ssh-ном порту? Тогда должно быть достаточно в роутере/беспроводном_маршрутизаторе пробросить этот порт на айпишник(локальный) сервера. Эту возможность должны предоставлять роутеры искаропки, а если нет, но есть доступ по ssh/telnet - можно поконфигурить через iptables)
      Что касается статического ip, то я хотел как-то писать скрипт, чтоб по крону мне присылал текущий айпишник на мыло, чтобы обойти эту проблему) плюс еще есть dyndns сервисы, я как-то пользовался, и роутер позволял это дело настроить собственными средствами конфигурации

      Удалить
  3. про x2go http://unixforum.org/index.php?s=&showtopic=108708&view=findpost&p=1239425
    терминальные сервера на linux : http://unixforum.org/index.php?showforum=89
    статья о всех решениях: http://unixforum.org/index.php?showtopic=136581

    ОтветитьУдалить
  4. Этот комментарий был удален автором.

    ОтветитьУдалить
  5. Если компьютер, на котором Ubuntu 14.04 с Unity, достаточно мощный. Канал от Windows компьютера до Ubuntu достаточно широкий. Обязательно в этом случае устанавливать apt-get install lubuntu-desktop и apt-get install xubuntu-desktop?

    Приложение хочу установить чтобы из Windows получать полный доступ к Ubuntu как по RDP.

    ОтветитьУдалить
  6. Если ставить на чистый Ubuntu Server с использованием lubuntu-desktop, то в клиенте вылезает ошибка "невозможно выполнить startlxde", помогло:
    apt-get install lxde-common

    ОтветитьУдалить
  7. При соединении типа "Соединение с удаленным десктопом", на клиенте нет указателя мыши.
    Печалька...
    Ни кто не знает как поправить?

    ОтветитьУдалить
    Ответы
    1. Дополнение. Происходит это в полно экранном режиме.

      Удалить
  8. Подскажите, при копировании текста из удаленной Linux машины (LXDE) в Windows происходит следующее:
    \u0422\u0435\u043a\u0441\u0442 \u0438\u0437
    Кто сталкивался? Как решали проблему?

    ОтветитьУдалить
  9. Это нормально, что из-под windows не работает запуск приложения, только терминальный режим. или что-то нужно понастраивать?

    ОтветитьУдалить
    Ответы
    1. вопрос снят. все работает. очепятался в команде запуска

      Удалить
  10. На x2go много жалоб в плане клавы. Хрен знает, с какого года уже. Вместо букв печатаются цифры. Короче задница.
    Странно, что об этом ни слова.

    ОтветитьУдалить
  11. вот еще http://bugs.x2go.org/cgi-bin/bugreport.cgi?bug=112
    так и не поправили.

    ОтветитьУдалить