Debian как запустить графическую оболочку через ssh

Обновлено: 02.07.2024

Немного обо всем и все о немногом, или практический опыт системного администратора.

Январь 2010
Пн Вт Ср Чт Пт Сб Вс
« Дек Фев »
123
45678910
11121314151617
18192021222324
25262728293031

Графика Linux через ssh

Calendar

13 января 2010, 17:41

На последней лекции нам рассказывали о службе X Server, которая является основой графики в Linux. Лекцию по этой теме выложу позже, а пока хочу описать о там как удаленно запустить графическое приложение Linux через ssh. Зачем это может понадобится это уже другой вопрос :) Итак, речь идет о двух компьютерах с Linux: удаленный (буду называть его debian) и свой локальный (назовем его ubuntu).

Сначала заходим по ssh на debian и открывает с правами администратора файл /etc/ssh/sshd_config. Ищем параметр X11Forwarding устанавливаем значение yes. Сохраняем файл и перезапускаем службу:

/etc/init.d/ssh restart

Отключаемся от удаленного компьютера и подключаемся еще раз только уже с ключом -X:

ssh -X user@debian

Теперь запускаем какое-либо графическое приложение установленное на удаленном компьютере debian, например браузер iceweasel:

если хотим получить доступ к командной строке.

Процесс iceweasel запуститься на удаленном компьютере, но изображение будет рисоваться на локальном экране компьютера ubuntu. Но об этом подробнее на лекции.

Можно также на локальном компьютере открыть файл /etc/ssh/ssh_config и в нем установить параметр X11Forwarding в yes. Тогда запуск графических приложений будет работать и без ключа -X.

Как уже упоминалось, графический сервер может быть развернут на удаленном компьютере, в том числе и под управлением Windows (платный NetSarang Xmanager, бесплатный Xming и другие) . Запросы графических приложений в этом случае будут обслуживаться по локальной сети, что требует изменения некоторых настроек, установленных по умолчанию. Для удаленного доступа к графической подсистеме Linux из Windows используются два основных способа:

- перенаправление графического ввода-вывода из среды Linux на графический сервер , работающий на стороне Windows ( X11 Forwarding )

- подключение с использованием X Display Manager Control Protocol (XDMCP) - протокола, обеспечивающего удаленное подключение графических терминалов (X-терминалов) к графическому серверу (X-серверу).

Первый способ реализуется с использованием сервера SSH на стороне Linux и позволяет получить приемлемое быстродействие графических приложений на системах с малой производительностью. Менеджер дисплея и TCP-соединения X-сервера на стороне Linux в данном случае не используются. Запросы графических приложений Linux перехватываются SSH-сервером и перенаправляются X-серверу на стороне Windows через ssh-клиент.

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

Оба способа предполагают наличие на стороне Windows X-сервера, в качестве которого, например, можно использовать популярный бесплатный Xming X Server for Windows

Сайт проекта Xming - здесь можно скачивать последние версии продукта, но только после внесения пожертвования.

Доступ к графическим приложениям Linux с использованием перенаправления X11 Forwarding.

В данном случае рассматривается реализация доступа по локальной сети к графическим приложениям Linux Debian из Windows 10. Правда, за последние несколько лет, практически не меняются никакие настройки Xming X-сервера и программного обеспечения графической подсистемы Linux. Разница в настройках зависит, в основном, от используемого менеджера дисплея. На стороне Linux потребуется установить SSH-сервер (если он не установлен), а на стороне Windows – Xming X Server. Оба продукта устанавливаются стандартно, без каких-либо особенностей.

Как уже упоминалось, перенаправление графического вывода удаленной подсистемы ( X11 Forwarding ) позволяет работать напрямую с графическими приложениями среды Linux на компьютере с графическим сервером Xming на стороне Windows. Данный режим реализуется с помощью SSH-подключения, в котором ssh-сервер sshd на стороне Linux перехватывает графический ввод-вывод и перенаправляет его ssh-клиенту ( PuTTY ) на стороне Windows, который в свою очередь , перенаправляет его графическому серверу Xming , развернутому в среде Windows. Таким образом, для реализации данного режима не требуется настройка на стороне Linux X-сервера и менеджера дисплея для работы по сети, но требуется установка и настройка демона sshd .

Для установки пакета ssh из репозитория Debian используется команда:

apt-get install ssh

Для установки требуются права суперпользователя root

Для проверки работоспособности ssh-сервера можно воспользоваться командой:

netstat -nap | grep sshd

В ответ получаем список слушаемых сервером sshd портов (состояние LISTEN) портов:

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

tcp6 0 . 22 . * LISTEN

Для режима перенаправления графического вывода X11 forwarding в настройках демона sshd необходимо включить ( проверить ) некоторые параметры. Все действия требуют права root.

Переходим в каталог /etc/ssh и открываем конфигурационный файл демона SSH sshd_config . Для работы через X11 Forwarding в нем должна присутствовать незакомментированная строка

Чтобы изменения вступили в силу, демон ssh нужно перезапустить командой

service sshd restart

После чего графическая подсистема Linux готова к использованию X11 Forwarding.

На компьютере с Windows нужно установить Xming X server и SSH-клиент с поддержкой X11 Forwarding, в качестве которого обычно используется PuTTY . Разработчики Xming с некоторых пор, включили в состав инсталляционных пакетов X-сервера и SSH-клиент (Normal PuTTY и Portable PuTTY), который можно установить вместе с Xming:

Выбор варианта инсталляции Xming

Однако, инсталлируемый в комплекте с X-сервером SSH-клиент PuTTY, представляет собой сильно урезанный консольный вариант, пользоваться которым крайне неудобно, особенно если требуется работать с большим количеством серверов SSH. Поэтому, лучше всего, скачать свежую и полную версию на странице загрузки PuTTY. На данной странице имеются ссылки для загрузки как 32-битной, так и 64-битной версии программы, как инсталляционные пакеты .msi , так и отдельные архивы с исполняемыми модулями, не требующие инсталляции. Вообще-то, PuTTY – это очень полезный и функциональный инструмент, который обладает гораздо большими возможностями, чем те, что необходимы для организации перенаправления X11 Forwarding, и , если вы серьезно настроены работать с SSH, желательно установить полный пакет. Однако, для организации X11 Forwarding можно просто скачать архив с PuTTY.exe или plink.exe . В этом случае инсталляция не требуется. Просто скопируйте исполняемый файл putty.exe в каталог с установленным Xming, или любой другой, по вашему выбору.

Настройка Putty для перенаправление X11 Forwarding.

PuTTY для X11 forwarding

Данные настройки означают, что разрешено X11 Forwarding и для него будет использоваться графический дисплей (X-дисплей) с номером 0 . Использовать 0-й номер дисплея не обязательно, но важно, чтобы этот номер совпадал с номером дисплея, указанном при запуске Xming ( поле Display number ):

Xming - X11 forwarding

Поле X display location можно вообще не заполнять – в этом случае, PuTTY будет определять дисплей X-сервера автоматически.

При запуске Xming , с помощью мастера Xlaunch , задается номер дисплея (при необходимости) и выбирается многооконный режим Multiple windows , остальные параметры можно оставить по умолчанию. Фактически, номер дисплея определяет номер порта графического сервера на стороне Windows

– 0 соответствует порту 6000/TCP

Соответственно, если на одном и том же компьютере запускается несколько X-серверов Xming, то номера графических дисплеев для них должны быть разными.

Порядок работы с графическими приложениями Linux с использованием X11 Forwarding

После того, как Xming стартовал, с помощью ssh-клиента PuTTY подключаемся к ssh-серверу Debian, и в командной строке запускаем нужное графическое приложение, Например, если запустить графический терминал xterm , то на компьютере с Windows появляется окно графического терминала Linux.

Xterm на компьютере с Windows через X11 forwarding

При запуске из сессии SSH-клиента PuTTY, или из окна уже запущенного терминала xterm , какого-либо графического приложения, например, обозревателя firefox на рабочем столе Windows отобразится его окно, в котором можно работать точно так же, как и на локальном компьютере с Debian Linux .

Удаленное подключение к графической подсистеме из Linux .

Настройки демона sshd для удаленного доступа к графической подсистеме Linux выполняются точно так же, как и в случае перенаправления для X-сервера на стороне Windows. Графический вывод удаленной системы, в данной конфигурации, будет перенаправляться демоном sshd и разворачиваться графическим сервером на стороне подключившегося ssh-клиента.

Для удаленного подключения к графической подсистеме с использованием перенаправления X11 Forwarding клиентов Linux-систем, можно воспользоваться стандартным SSH-клиентом:

ssh -X -l user 192.168.0.1

-X - использовать перенаправление графического вывода X11Forwarding.

-l user - имя пользователя для подключения к удаленному компьютеру.

192.168.0.1 - адрес удаленного компьютера

После регистрации в удаленной системе, пользователь user имеет возможность работать с графическими приложениями на удаленном компьютере 192.168.0.1

Для запуска конкретного приложения на удаленной системе, можно указать его имя:

ssh -X -l user debian-9 ‘xterm’ - подключиться к компьютеру debian-9 в режиме X11 Forwarding и запустить графический терминал xterm .

После авторизации, на локальном дисплее отобразится окно терминала xterm удаленного компьютера под управлением Linux.

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

И в заключение, добавлю, что на компьютере с Linux графическая среда не нужна, поскольку с графическими приложениями взаимодействует X-сервер на удаленном компьютере с Windows или Linux. Этот факт позволяет повысить быстродействие графических приложений за счет экономии ресурсов компьютера с ОС Linux, которые потребовались бы для графической среды (особенно с KDE).

Подключение к рабочему столу Debian с использованием XDMCP.

Данный вид подключения позволяет получить рабочий стол Linux на компьютере с Windows и требует изменения настроек менеджера дисплея и графического сервера.

Менеджер дисплея ( Display Manager или DM ) - это специальная системная служба обеспечивающая запуск графического сервера, вывод на графический дисплей приглашения на вход в систему, регистрацию пользователей, запуск оконных менеджеров, монтирование необходимых устройств, ведение баз данных входов и выходов пользователей в системе utmp и wtmp и т.п.

А если упрощенно - то менеджер дисплея - это программа, с которой начинается сеанс работы пользователя в графическом окружении Linux. Визуально, менеджер дисплея представляет собой окно регистрации пользователя при входе в систему. Обычно под этим подразумевается форма для ввода логина и пароля, меню для выбора графической среды, и дополнительные элементы управления питанием (для выключения компьютера, перезагрузки, перевода в спящий режим), выбора языка ввода, и т.п. По умолчанию, в Debian 9 устанавливается менеджер дисплея Light Display Manager ( LghtDM ) , однако имеется возможность сменить его другие - GNOME display manager (GDM) , KDE display manager (KDM) , LXDE display manager (LXDM) и т.д. Какой из менеджеров используется в данный момент времени, можно посмотреть в файле /etc/X11/default-display-manager . Пример содержимого в Debian 9:

Все файлы конфигурации менеджера дисплея LightDM размещаются в системном каталоге /etc/lightdm . Основные настройки хранятся в файле lightdm.conf , где нужно найти секцию XDMCP:

Если в файле конфигурации sshd_config отсутствует секция [XDMCPServer] , то настройки можно выполнить в секции менеджера дисплея [LightDM] , раскомментировав строки:

Внесенные изменения вступят в силу только после перезапуска менеджера дисплея или перезагрузки системы. Для перезапуска LightDM можно воспользоваться командой:

service lightdm restart

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

Для подключения к удаленному Debian, можно воспользоваться ярлыком Xlaunch . При подключении с использованием XDMCP необходимо выбрать режим работы в одном окне ( One Window ):

Xlaunch - режим XDMCP

Выбираем сессию с использованием XDMCP:

Xlaunch - режим XDMCP

Указываем IP-адрес или имя компьютера с ОС Linux, к которому необходимо подключиться:

Xlaunch - адрес или имя удаленного Linux

Следующий экран служит для определения дополнительных параметров сессии и его пока можно оставить без изменений. Жмем кнопку "Далее" и, если все сделано правильно - перед нами приглашение менеджера дисплея Linux.

Способы устранения проблем удаленного подключения к графической подсистеме Linux из Windows:

5-comandos-basicos-de-consola-del-cliente-de-SSH-en-Linux-professor-falken.com_

1. По ssh соединению можно запустить графическое приложение удаленного компьютера, которое откроется на вашем мониторе.
2. Можно также запустить то же графическое приложение, но оно уже откроется на удаленном мониторе.

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

После перегрузим ssh, выполнив команду:

sudo service ssh restart

На своем компьютере нужно раскомментировать или добавить строку:

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

Команда будет иметь такой вид:

ssh -XC user@192.168.1.xx

После этого можно запускать любую программу, имеющую графический интерфейс, и она появится на вашем мониторе. Вы увидете приложение даже в том случае, если такая же программа не установлена на вашем компьютере. В итоге можно запустить удаленную графическую программу и на своем мониторе поработать с ней, а результат сохранить на удаленный компьютер. Это очень удобно, если хозяин удаленной машины попросил вас помочь в настройке определенной программы, или в создании какого-нибудь файла, созданного в LibreOffice, GIMP, Inkscape и т.д. Вы теперь можете удаленно помочь человеку. Хотя некоторые тормоза присутствуют, но это не критично.

рабочий стол 1_007

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

После этого дадим команду GUI программам, что по нашей (удаленной) команде, они должны запустить в графическом режиме на своем (локальном) компьютере:

Теперь можно запускать любое приложение:

или, как в моем случае, я запустил нужный мне файл:

Можно также запустить приложение в связке с утилитой nohup, которая защитит программу от сбоев связи. Теперь даже если вы отключитесь от удаленной машины, то запущенная программа будет работать. Пример:

подключился по ssh как root(нужно именно как root) к удаленной машине. на удаленной машине есть xserver, он запущен и работает как надо.

вопрос в том, как в данной ситуации запустить GUI прогу на удаленном компе чтоб она отображалась на удаленном компе?

сейчас получаю ошибку: XOpenDisplay: unable to open display


в X11 переменную DISPLAY= используют

в Wayland - как-то немного по-другому

в X11 переменную DISPLAY= используют

и? что это значит? ну, используют - ок. но как это отвечает на мой вопрос?



ssh host gedit - запустит gedit на host, окно выведет туда, откуда ты делал команду
ssh host DISPLAY=:0 gedit - запустит gedit на host, окно выведет на :0 host-a

а конфиг($HOME/.ssh/config) нужно фиксить на локальной, или удаленной?


это конфиг клиента, который убирает твою ошибку XOpenDisplay: unable to open display
по задаче он тебе ненужен, показан для разнообразия ответа.

ясно, но что-то не так.


ssh root@192.168.0.100 echo $DISPLAY

пусто. она не установлена.


но в стартовом посте

на удаленной машине есть xserver, он запущен и работает как надо.

ну покажи команду запуска, или лучше сразу смотри в Xorg.log

в стартовом посте я говорил о том, что на удаленной машине установлено ПО xserver`а, потому что я могу запускать там тот же xterm, но логинюсь я на удаленную машину в этом случае не как root и не удаленно. (ну, т.е., у меня есть физический доступ к машине)

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

niXman ★★★ ( 16.04.19 16:05:09 )
Последнее исправление: niXman 16.04.19 16:06:58 (всего исправлений: 3)


UPD. а. тогда ищи.

Dispetcher14 ★★★★ ( 16.04.19 16:07:23 )
Последнее исправление: Dispetcher14 16.04.19 16:08:10 (всего исправлений: 1)


Ну, что не так. Номер дисплея там например, запущены ли иксы вообще и всё такое.

я могу удаленно, на удаленной машине запустить GUI программу НЕ КАК root. значит все ок?

вопрос в том, почему я не могу этого сделать как root?

niXman ★★★ ( 16.04.19 16:13:38 )
Последнее исправление: niXman 16.04.19 16:13:55 (всего исправлений: 1)


под каким пользователем запущены иксы, под тем и запускай команду. sudo или su в помощь


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

используй ssh -X или ssh -Y

ssh устанавливает на удаленной машине DISPLAY=:0 и пробрасывает на локальный X сервер

т.е. не надо указывать эту переменную - просто запускай свою программу

Ему надо наоборот.

От рута делаешь su username и дальше обычное DISPLAY=:0 galculator . Если надо без su, то надо разрешить иксам подключение от рута (да, в иксах есть своя система доступа), опять же от пользователя иксов xhost local:root

на компе на котором запущен X сервер, должен быть открыт порт 6000/tcp в firewall

логика такая с открытыми портами:

для 0: - 6000 для 1: - 6001 и т.д.

далее X server должен быть запущен с параметром -listen tcp. По умолчанию опция -nolisten.

Далее либо X server должен быть запущен без аутенфикации - опция -ac либо добавить хост с которого идет соединение в список доверенных man xhost

далее запускаете приложение так: $ DISPLAY=<ip address>:0 xterm

xterm и номер экрана 0 для примера


Попробуй найти в домашнем каталоге пользователя(через которого все ок) файл настройки .x(что-то там) и скопируй его в домашний каталог рута

Николай Беляшов

Удаленное подключение к рабочему столу Linux из Windows с помощью Xming и SSH


Вы видите приложения Linux прямо на рабочем столе Windows! Как же они туда попали?

Но это еще не все! Дело в том, что оконная система может находиться на другом компьютере, а графическое приложение связываться с ней через сеть. Так вы можете запустить приложение на удаленном компьютере, заставив его рисоваться на том компьютере, за которым сейчас работаете. Или наоборот. Или запустить программу на одном удаленном компьютере с отрисовкой интерфейса на другом удаленном компьютере. Заманчивая возможность, неправда ли? 🙂

Думаю, достаточно теории, давайте приступим к практике.

$ sudo apt-get install openssh-server

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

1. SSH-клиент. Я установил PuTTY.
2. X Server для Windows. Я выбрал Xming.

Для начала установим соединение по SSH с удаленным компьютером. Для этого запускаем PuTTY. Вводим IP-адрес компьютера Linux.



Теперь переходим в раздел Connection / SSH / X11 и включаем перенаправление графического интерфейса. В качестве расположения X-сервера водим IP-адрес компьютера Windows, за которым сейчас сидим.



На втором шаге нам предлагается автоматически запускать какое-нибудь приложение вместе с иксами. Я предпочел сделать это позже по мере необходимости посредством уже запущенного нами PuTTY.



В системном лотке появится иконка Xming



В дальнейшем запустить сервер с теми же настройками можно просто путем открытия сохраненного файла. Изменить настройки можно через контекстное меню файла.



Итак, X-сервер запущен. Возвращаемся в нашу консоль, предоставленную соединением SSH. Здесь мы можем удаленно запустить консольное приложение, и в этой же консоли увидим вывод этого приложения. А что теперь будет, если мы попытаемся запустить в этой консоли графическое приложение? Обычно, если вы подключились по SSH и пытаетесь запустить оконное приложение, вы получите ошибку, потому что вы подключились к удаленному компьютеру в консольном режиме, и рисовать окна просто нечем. Однако, в этот раз мы включили перенаправление графики на наш компьютер Windows, на котором уже запущен свой X-сервер. Поэтому, если вы попытаетесь запустить оконное приложение в удаленном консольном терминале, его окно нарисуется на компьютере Windows. Попробуйте, например, набрать следующую команду:

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

Ну, надеюсь, у вас все получилось, и на вашем рабочем столе Windows красуются оконные приложения Linux.

Читайте также: