Назад | Перейти на главную страницу

XServer, удаленная рабочая станция Debian

Я хочу настроить безголовую рабочую станцию ​​под управлением Debian Linux. Я бы хотел запустить XServer на другом компьютере. Подумайте о тонком клиенте, хотя машина с «тонким клиентом» на самом деле довольно мощная. Насколько это возможно, я хочу, чтобы машина с тонким клиентом Чувствовать как будто я все делаю локально, при этом фактически сохраняю все файлы (кроме конфигурации, кеша и, возможно, закрытых ключей ssh, я полагаю) на удаленной рабочей станции и выполняю всю обработку ЦП на удаленной рабочей станции. Два компьютера подключены к локальной сети.

Итак, тонкий клиент для ввода с клавиатуры, мыши и отображения графического интерфейса. Все остальное (менеджер рабочего стола, все программное обеспечение, вся обработка) на рабочей станции.

Как мне этого добиться? VNC действительно не подходит, поскольку он требует (или, кажется, требует). Я вхожу в систему локально, на рабочей станции, а затем просто удаленно повторяю рабочий стол. Я мог бы использовать ssh, но для этого требуется, чтобы я запускал полную среду рабочего стола на машине с тонким клиентом, но мне действительно нужно как можно меньше.

Мне не нужно держаться за руки, я просто не знаю, какие у меня есть варианты. Очевидно, это возможно, мы делали это еще в начале 90-х, просто не знаю как. Тонкий клиент имеет много места на жестком диске, много мощности процессора и 32 ГБ оперативной памяти, просто рабочая станция более мощная. И лучше контролируется. Но сидит в шкафу без монитора.

Ваш вопрос поднимает ряд концепций, подробное обсуждение которых требует большего, чем книга (... поскольку большинство этих «концепций» возникли в первые дни XWindow и развились до сегодняшнего дня ...).

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

Тем не менее, я обращусь к этому, коснувшись поверхности некоторых моментов, которые вы должны четко иметь в виду, приближаясь к удалению приложений в системах Unix / Linux / XWindows:

  1. "X Window System"лежит в основе почти каждого приложения Linux, которое демонстрирует какой-то графический интерфейс. Приглашая вас проверить детали самостоятельно (существует более 30 лет истории, в которой вы можете поискать), я хочу подчеркнуть очень важный момент : По замыслу X11 был спроектирован таким образом, чтобы каждое отдельное приложение могло работать на хосте и, в то же время, отображаться (как в случае с графическим интерфейсом) на совершенно другом хосте.. Это без каких-либо явных усилий со стороны программиста.

    Это радикально отличается от того, к чему люди привыкли на платформе Win32, где только добавление явного уровня (RDP и соответствующие службы терминалов) обеспечивают аналогичное поведение, начиная с нескольких десятилетий назад (но наверняка отсутствовали в Win 3.XX). , Windows 95, Windows 98, Windows NT и, возможно, в некоторых более поздних версиях. Не говоря уже о проблемах с лицензированием ...)

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

Итак, возвращаясь к вашему вопросу, вы наверняка можете запустить свое приложение X11 на большом железе, которое у вас есть в шкафу, и отобразить его графический интерфейс в другом месте.

Этого достаточно? К сожалению, нет .... Позвольте мне объяснить, почему:

  1. "удаленное приложение"vs."удаленного рабочего стола": иногда было бы достаточно иметь на моем рабочем столе (я имею в виду графические элементы, которые отображаются на мониторе моего ноутбука, где я запускаю полный рабочий стол Ubuntu) графический интерфейс приложения, которое где-то запущено еще. В качестве примера у меня обычный рабочий стол, но ... окно "firefox" связано с "firefox", запущенным на другом компьютере. В таком случае я получаю доступ к удаленному приложению в своей среде рабочего стола..

    В других случаях я бы предпочел, чтобы удаленная система отображала весь рабочий стол, а не отдельные приложения. Следовательно, удаленная система должна решить немного больше проблем, так как ... есть также какое-то "специальное" окно (то, которое покрывает весь монитор и более или менее не имеет границ) для рендеринга, и, в первую очередь, рендеринга весь набор настольных приложений (строка меню, строка состояния и т.д. и т.п.). В таком случае я получаю доступ ко всему удаленному рабочему столу.

Исходя из вашего вопроса, неясно, интересуют ли вас «удаленные приложения», «удаленный рабочий стол» или и то, и другое.

Это все? Пока нет ... к сожалению.

  1. "транспорт": очевидно, что разделение логики приложения (работающего на сервере) от графического интерфейса пользователя (отображение на удаленном дисплее) подразумевает потребность в надежном сетевом канале связи. Когда X11 был разработан, возможно, я еще не родился (BTW : Мне 46!). Не было Интернета. И не было понятия «риски подключения к сети». Таким образом, в протоколе X11 не было абсолютно НИКАКОЙ точки безопасности. Таким образом, если вы сидите перед X-терминал с IP a.b.c.d, от этого вы бы просто telnet e.f.g.h и оттуда запустите что-то вроде:

xclock --display a.b.c.d:0.0

и вдруг появилось окно xclock. В то время, если ваш друг сидел на терминале y.z.x.w и ты бы дал ему root оболочка на e.f.g.h, вы из a.b.c.d), можно было бы просто:

telnet e.f.g.h
su -
xterm --display y.z.x.w:0.0 &

и вдруг у вашего друга выскочило окно xterm с правами root и без ввода пароля!

Имейте в виду, что мы говорим о временных рамках, когда системы Win32 еще не существовали. В лучшем случае это было время Windows 3.11.

Теперь перенесемся на 20 лет вперед. Пришел Интернет. Проблемы с безопасностью. И внезапно многие люди обнаружили, что легко захватить «видео», «мышь» и «клавиатуру» в незашифрованном сеансе X11.

Было реализовано несколько решений (многие из которых до сих пор неясны / неизвестны мне), но, безусловно, лучшим из них является SSH-X11-Пересылка. Благодаря этому, даже сейчас, в 2017 году, каждый божий день, когда я сажусь за свой стол на работе, я:

  • поместите ноутбук на док-станцию ​​и включите его (в углу стола);
  • войти в систему на моем настольном компьютере (левый включенный, с "заблокированным" дисплеем / сеансом), подключенным к двум большим 27-дюймовым дисплеям;
  • с моего рабочего стола, ssh в мою записную книжку с ssh -X verzulli@10.0.72.21;
  • из полученного терминала запустите thunderbird &;

Итак, у меня есть мой thunderbird, установленный и работающий на ноутбуке (со всеми соответствующими архивами), и он отображается на гораздо более удобных дисплеях 2 x 27 дюймов.

Это ... несмотря на то, что с момента появления X11 прошло более 30 лет ... и без необходимости какой-либо формы лицензирования!

Это все? Еще нет :-)

  1. X.client vs. X-сервер: думая о том, что я делаю каждый день со своим thunderbird, вы должны увидеть это:

    • thunderbird это X-клиент работает на моем ноутбуке, где впереди никого нет;
    • мой Настольный ПК Linux - это X-сервер, получение X11-потока от клиента и отображение его на локальном дисплее.

    Похоже, что роли клиента и сервера поменялись местами. Именно это и происходит с тем, что вы называете «Тонкий клиент»: они НЕ клиент с сетевой точки зрения: они «сервер». Вот почему для отображения удаленного приложения X11 на вашем устройстве вам нужен X-сервер, работающий на нем: потому что вам нужен X-сервер, способный понимать поток X11, поступающий из сети (... от клиента ) и правильно визуализируем получившееся отображение.

    В предыдущих ответах вам говорили о Xnest, и на самом деле я бы добавил Ксефир: они есть:

    • стандартные приложения X11, с точки зрения локального XServer. Как таковые, они типично визуализируются «локально» на локальном дисплее;

    • они являются X-серверами в том смысле, что они могут принимать поток X11 удаленного приложения (типичное, полностью удаленный рабочий стол) и отображать его ВНУТРИ одного окна.

В общем, ничто не мешает вам использовать уже установленный XServer на вашей машине без необходимости использования Xephyr или Xnest. Другими словами, вы можете захотеть использовать свой XServer, установленный на вашем собственном хосте Linux, для подключения к удаленному хосту с просьбой получить весь поток X11-desktop. В общем, это было бы так просто:

  • выйти из X11, вернуться в текстовый интерфейс командной строки (без графического интерфейса);
  • просто запустите что-то вроде: X -query a.b.c.d

где a.b.c.d - это IP-адрес хоста, на котором протокол XDMCP был настроен и включен (более или менее).

Гуру на этом сайте скажут, что я слишком упрощаюсь .... и они правы! Поэтому, пожалуйста, воспользуйтесь указанным выше подходом (X -query) только как объект для дальнейшего исследования.

Мы закончили? Да ... но не раньше, чем добавить пару других быстрых замечаний:

  1. Эффективность протокола: X11, разработанный более 30 лет назад, определенно является неработающим протоколом: у вас будет МНОГО проблем с его использованием с пропускной способностью ниже 100 Мбит / с (BTW: в моем офисе у меня гигабитное соединение между моим ноутбуком и мой рабочий стол). YMMW, но, пожалуйста, имейте это в виду, когда будете экспериментировать ( xclock окно может появиться даже через 30 секунд, когда вы запустите его на удаленном VPS). У меня нет проблем с признанием того, что протокол RDP от Microsoft, появившийся много лет спустя, намного более дружелюбен к пропускной способности. С этой точки зрения RDP действительно превосходит X11;

  2. Для решения пункта 5 было приложено много усилий в нескольких проектах. Основные из них - ИМХО - это NX и связанный с ним FreeNX (который, к сожалению, кажется мертвым проектом);

  3. На мой взгляд, в настоящее время (2017 г.) попытка добиться удаленности всего рабочего стола (без Xnest или, лучше, Xephyr) намного сложнее, чем раньше ... и определенно намного сложнее, чем удаленная удаленность только тех приложений, которые вам нужны. . Это связано с тем, что текущая среда рабочего стола развивалась на настолько высоком уровне, что ... у них есть много проблем с "подгонкой" к удаленному дисплею X11 (подумайте об удивительной анимации, которую вы можете получить с compiz-подобные технологии и соответствующие требования для достойного удаленного рендеринга. Это в дополнение к проблемам безопасности, вызванным внутренними уязвимостями протокола X11).

Вот и все.

Я действительно знаю, что я абсолютно НЕ ответил на ваши вопросы: я только надеюсь, что дал вам действительно хорошее представление об этом прекрасном мире X11 ... вы будете счастливы открыть для себя сами :-)

На клиенте вам понадобится достаточно ОС для загрузки, загрузки библиотек, управления локальным видео / клавиатурой / мышью и запуска X-сервера. На удаленном безголовом устройстве выполните обычную установку того, что вы хотите, и настройте на нем средство приветствия (gdm, kdm, mdm, xdm - типичный выбор, в зависимости от среды рабочего стола и т. Д.), Чтобы разрешить запросы через протокол XDMCP. Как только это будет сделано, на вашем локальном клиенте запустите X-сервер и попросите его запросить приветствующего на удаленном хосте. Приложения запускаются с удаленного хоста, взаимодействие с пользователем происходит на локальном клиенте.

Вы даже можете запустить полную ОС на своем локальном компьютере, а когда вам нужно что-то с пульта, вы можете использовать Xnest чтобы вложить второй X-сервер в ваш текущий, запросить удаленный хост и запустить второй рабочий стол как приложение, как это работает VNC.

Включите автоматический вход на тонком клиенте. Установите запускаемое приложение на рабочий стол тонкого клиента для выбранных вами программ удаленного входа. Рассмотрим RDP, который также легко подключается к любым серверам Windows, которые у вас могут быть.

Тонкому клиенту потребуется достаточно графического интерфейса для запуска X-сервера или его эквивалента. Существуют специализированные, легкие дистрибутивы корневых тонких клиентов только для чтения, такие как LTSP. Или просто ssh -X и запускать удаленные программы ad-hoc.

Помните, что программы работают на сервере. Пользователи должны иметь привычку сохранять в общие сетевые папки, если они хотят найти свои файлы. Кроме того, графический интерфейс может выглядеть немного иначе, если это другая версия или тема, выбранная пользователем.