- linux-notes.org
- Настройка X11 forwarding используя ssh в Unix/Linux
- Установка ПО для настройки X11 forwarding используя ssh в Unix/Linux
- Установка xauth в Debian/Ubuntu
- Установка xauth в CentOS/RedHat
- Установка xauth в Fedora
- Установка xauth для других Unix/Linux ОС
- Настройка X11 forwarding используя ssh в Unix/Linux
- Использование X11 forwarding через ssh в Unix/Linux
- Сетевые соединения X11
- ▍ Сетевая структура взаимодействий X-сервера
- ▍ Взгляд изнутри трафика между клиентом и сервером X
- ▍ Удаленное подключение к X-серверу по ssh
- Навигация
- Настройка сервера
- Настройка клиента
- Запуск
- Настройка клиента Windows
- Установка Xming
- Настройка PuTTy
- Обсуждение
- How To Configure X11 Forwarding Using SSH In Linux
- What is X11 forwarding?
- Configure X11 Forwarding Using SSH In Linux
- Configure X11 forwarding in Putty
linux-notes.org
Настройка X11 forwarding используя ssh в Unix/Linux
X11 forwarding — это механизм, позволяющий отображать на локальном клиентском компьютере графические интерфейсы X11 программ, запущенных на удаленном Unix/Linux сервере. SSH имеет возможность безопасного туннелирования X11 соединений, так что сеансы X11 forwarding-а шифруются и инкапсулируются. Если вы хотите настроить X11 forwarding через SSH, то данная тема именно для вас.
Установка ПО для настройки X11 forwarding используя ssh в Unix/Linux
Для X11 forwarding-а на удаленном сервере не требуется полная система X11. Однако, серверу необходимо установить xauth. xauth — это утилита, которая поддерживает конфигурации Xauthority, используемые сервером и клиентом для аутентификации сеансов X11. Чтобы установить xauth, выполните следующие действия на удаленном сервере.
Установка xauth в Debian/Ubuntu
И так, выполняем команду:
Переходим к настройке.
Установка xauth в CentOS/RedHat
И так, выполняем команду:
Установка xauth в Fedora
И так, выполняем команду:
Установка xauth для других Unix/Linux ОС
Можно создать docker контейнер и запустить его.
Переходим к настройке.
Настройка X11 forwarding используя ssh в Unix/Linux
И прописываем (приводим к виду):
Так же, можно прописать:
Перезапуск SSH сервера:
- Если используете Debian 6, Ubuntu или Linux Mint:
- Если используете Debian 7, CentOS/RHEL 7, Fedora
- Если используете CentOS/RHEL 6
Вышеупомянутая настройка, позволяет X11 форвардинг на хост сервера. Если вы хотели бы включить X11 forwarding для отдельного пользователя, вы можете использовать пользовательский файл конфигурации ssh (т. е. $HOME/.ssh/config). Таким образом, вы можете использовать переадресацию X11 только тогда, когда вы используете ssh для учетной записи пользователя. Открываем:
Мой файл выглядит следующим образом:
Если используете Vagrant, то внутри его, можно пробросить следующие опции:
Ну и далее запускаем все это дело.
Использование X11 forwarding через ssh в Unix/Linux
На локальном хосте должна быть установлена система с X11, чтобы отображать удаленные программы. Для того чтобы выполнить форвардинг, выполните:
После входа в систему вы можете запускать любую X11 программу на удаленном сервере, как обычно, и ее отображение будет отображаться на локальной клиентской машине.
Можно еще опции, передавать через коммандную строку:
Безопастность при использовании X11 forwarding через ssh
Обычно, не рекомендуется всегда работать с «ForwardX11 yes». Поэтому, если вы хотите использовать свои SSH-соединения с пвыщенной безопасностью, лучше всего сделать следующее:
- Не прописывать «ForwardX11 yes» в ваш «$HOME/.ssh/confi»g файл.
- Используйте «ForwardingX11» только когда вам это необходимо, используя «ssh -X your_user@your_server».
- Если вы можете, полностью отключите «X11Forwarding» на вашем сервере.
Вот и все, статья «Настройка X11 forwarding используя ssh в Unix/Linux» завершена.
Источник
Сетевые соединения X11
Есть две технологии в ИТ, которые казалось должны были исчезнуть на рубеже прошлого века, но их живучесть и удобство раз за разом отодвигает их уход со сцены. Речь идет об IPv4 и X11. Если первый из них практически во всех аспектах уступает IPv6, то преимущества Wayland, как технологии над X11 очевидны не всем. Wayland вовсе не универсален, как X Windows System, он намного более прост. Это дает ему ряд преимуществ по сравнению с иксами, но в этом же кроются его недостатки.
Если говорить о преимуществах, то это в первую очередь простота реализации и долгожданное избавление пользователей графической среды Linux от таких артефактов перерисовки, как разрывы изображения, a․ k․ a․ tearing. С этим особенно часто сталкиваются обладатели видеокарт NVidia. Хватает и недостатков и противники замены X-сервера напирают на гибкость использования сетевых возможностей в различных сценариях.
As mentioned, X is essentially a networking protocol with graphical displaying capabilities.
На самом деле X11 сетевой протокол с графическими возможностями, а не наоборот. Из этого простого факта следует, что даже если в скором времени основные дистрибутивы Linux перейдут на протокол Wayland, многие из возможностей и примеров использования X сервера будут востребованы еще достаточно долгое время. Удаленный доступ к приложениям и сессиям X.Org — современной реализации X Window System, одна из таких ключевых особенностей системы.
▍ Сетевая структура взаимодействий X-сервера
Наиболее распространенным IPC, т․ е․ способом взаимодействия между процессами, X-клиента и X-сервера, являются сокеты. Их роль в предоставлении API связи с использование TCP/IP, а также сокетов домена Unix. Помимо сокетов клиент и сервер для коммуникации могут также использовать иные каналы IPC, например MIT Shared Memory Extension.
Доменные сокеты Unix (от англ. Unix Domain Sockets, UDS) являются POSIX-механизмом IPC, с помощью которого различные процессы ОС могут взаимодействовать друг с другом. Такие сокеты эффективнее локальных TCP/IP соединений, так как не требуют дополнительных байтов в заголовке протокола. Подобно сокетам TCP/IP, доменные сокеты Unix поддерживают надёжную потоковую передачу данных с помощью SOCK_STREAM. Они также могут работать в режиме упорядоченной ( см․ SOCK_SEQPACKET) и неупорядоченной ( см․ SOCK_DGRAM) передачи датаграмм.
Рис. 1 Сетевое взаимодействие между клиентом и сервером X с помощью UDS.
UDS используют файловую систему ОС в качестве адресного пространства имён (например /tmp/my_xapp ), сами сокеты в ней всего лишь inode, а процессы обращаются к сокетам, так же, как к файлу. Однако обмен данными в активном соединении использует не файловую систему, а только буферы памяти ядра.
Рис. 2 Сетевое взаимодействие между клиентом и сервером X поверх TCP/IP.
Сокеты TCP/IP и UDS создаются с помощью функции CreateWellKnownSockets(). Для этого она обращается к _XSERVTransMakeAllCOTSServerListeners . Эта процедура пробегает по каждому интерфейсу транспорта, поддерживаемого сервером.
Количество таких интерфейсов определено константой NUMTRANS в файле X11/Xtrans/Xtrans.c.
Таблица Xtransports[] определена в том же самом файле и содержит 10 элементов, таким образом NUMTRANS ≤ 10.
Сами же флаги, которые во время сборки определяют транспортные интерфейсы X сервера, можно найти в xc/config/cf/linux.cf .
Проследив цепочку до системного вызова socket() находим такую последовательность транспортных процедур.
Серверный процесс стартует с вызова функции TRANS(CreateListener) из Xtrans.c . Далее переход в состояние ожидания входящего соединения происходит в такой последовательности.
В файле Xtransmit.h можно обнаружить X_TCP_PORT . Первое клиентское соединение будет использовать порт 6000, второе — 6001 и т․ д․
▍ Взгляд изнутри трафика между клиентом и сервером X
Запустим простейшую иксовую программу Xclock и проверим как все это работает на практике.
В первой строке вывода видим, что системный вызов socket() завершился успешно и вернул файловый десткриптор 3. Далее, во второй строке setsockopt() выставляет параметр TCP_NODELAY , с которым TCP фрагменты отправляются по сети как можно ранее, даже если эти фрагменты слишком малы. В третьей строке опять встречается setsockopt() на это раз для активации опции SO_KEEPALIVE . Данный параметр поддерживает соединение в активном состоянии, с помощью периодической отправки служебных сообщений. Наконец в четвертой строке системный вызов connect() соединяет клиент X с сервером, по TCP порту 6000.
Используемый TCP порт напрямую связан с количеством соединений и номером переменной $DISPLAY , если бы использовалось DISPLAY=tcp/192.168.10.10:1.0 , то тогда в последней строке connect() состоялся бы по TCP порту 6001.
После рукопожатия обмен данными происходит с использованием структур X-клиента — xConnClientPrefix , и X-сервера — xConnSetupPrefix , XconnSetup , определенных в файле /usr/include/X11/Xproto.h . Размер занимаемой памяти в структур в байтах определен в #define директивах заголовочного файла.
Рис. 3 Установка параметров соединения в сессии X11.
Можно также пронаблюдать за процессом с помощью сетевого анализатора, клиентский запрос Initial connection request соответствует вызову xConnClientPrefix . Соответственно Initial connection reply в следующем пакете создан со стороны xConnSetupPrefix и xConnSetup . Для сбора трафика можно запустить Wireshark и слушать локальный интерфейс, либо с помощью следующей команды tcpdump.
Далее, сам файл можно открыть в Wireshark и отфильтровать просмотр по протоколу x11 . Обычно для сбора трафика нужны привилегии root.
Рис. 4 Сетевой след соединения X11 в WireShark.
То же самое и во всех подробностях можно увидеть в tshark в текстовом формате. Так выглядит клиентский запрос X11 в сторону сервера.
Пакет с ответом со стороны X-сервера совсем не так лаконичен, в нем указаны все необходимые детали для форматирования графического вывода на экран.
▍ Удаленное подключение к X-серверу по ssh
Переходя от теории сетевых взаимодействий X Window System к практике, рассмотрим, как запустить графическое приложение на уделенном X-сервере при подключении по ssh.
- Подключение необходимо запускать с ключом -X , который активирует переадресацию X11. На практике, однако из-за X11 SECURITY extension это часто не работает. В таких случаях используют -Y для подключения с доверительной переадресацией X11.
- Убедитесь, что на удаленном сервере установлен пакет xauth , который создаст файл
/.Xauthority y. Если все нормально, то файл уже создан и проверка показывает на наличие MAGIC COOKIE.
- Имеет смысл в качестве проверки иксов выполнить xclock прежде, чем запускать JAVA installer, или мастер настроек некоей корпоративной CRM, или ERP системы. Если показалось окно xclock, то соединение с X-сервером работает как надо.
Рис. 5 Собственно xclock, значит удаленные иксы настроены и работают.
- Если после логина по ssh была выполнена команда смены пользователя sudo su — для перехода в root, то тогда необходимо выставить переменную DISPLAY. Этого не надо делать, если используется изначальный пользователь и сеанс shell.
Я стараюсь по мере возможности тестировать сеанс Wayland при каждом новом релизе KDE Plasma, несмотря на многочисленные улучшения с каждым разом, на версии kde-apps-21.04.3 работать можно лишь на Plasma-X11. В чем бы не состояли преимущества Wayland, до тех пор пока в терминале зависает команда man, хаотично прыгают элементы ниспадающего меню и блуждает внешний монитор, старый и добрый X Window System остается вне конкуренции. Надеюсь так не будет продолжаться долго.
Источник
Навигация
X11 SSH Forwarding
Настройка сервера
Настройка клиента
Запуск
Заходим на удаленный хост и потом запускаем приложение kopete
Сразу запустить приложение kopete
X11 connection rejected because of wrong authentication
Убедитесь что права на удаленном хосте принадлежат пользователю
Настройка клиента Windows
Установка Xming
Xming — порт сервера X Window System для операционной системы Microsoft Windows.
Скачать Xming с SourceForge и установить.
Настройка PuTTy
Указать адрес дисплея
Просто запускаем программу в терминале
Обсуждение
спасибо, всё работает на ура! только очень тормознуто (или это только у меня так?).
Да есть такое, что тормозит жутко, даже если через локалку
Алексей, радует, что причина тормозов в данном случае — не мои кривые ручки. а что посоветуете вместо данного решения? пробую сейчас xrdp (в линуксах не шибко разбираюсь), и через rdp из winxp у меня только консольное окно появилось, рабочего стола как такового нет. думаю вот, что делать дальше. 🙂
Кроме VNC ничего другого не использовал, так что советовать мне особо нечем
у меня уже всё получилось. доставил xrdp в систему, из winxp запустил терминальную сессию на ip-адрес компа с linux, увидел окошко терминала, набрал google-chrome (ради чего всё и затевал) и получил нужное. что радует, после закрытия терминального окна и повторного входа вижу всё ту же картинку, что и до закрытия. сам не ожидал, что всё так просто получится. Алексей, спасибо за статью и успехов в делах! 🙂
тоже настроил, всё работает кроме PHPStorm. запускаю, он запускается, но картинку на клиента не передаёт, а локально отображается почему-то. А все остальные программы работают как надо, удалённо.
Источник
How To Configure X11 Forwarding Using SSH In Linux
Today, we are going to learn a lesser known, interesting and useful feature about Linux. I am sure most of you know about SSH. We can access remote Linux systems securely via SSH. But, did you know that it is possible to forward X over SSH to run graphical applications remotely? Yes! This mechanism is known as X11 forwarding. In this guide, we are going to configure X11 forwarding using SSH in Linux.
What is X11 forwarding?
X11 forwarding is method of allowing a user to start a graphical applications installed on a remote Linux system and forward that application windows (screen) to the local system. The remote system need not to have X server or graphical desktop environment. Hence configuring X11 forwarding using SSH enables the users to securely run graphical applications over SSH session.
To put this in layman terms,
- We connect to a remote system via SSH,
- And then we launch a GUI application (which is installed in the remote system) from that SSH session,
- Now, the GUI application runs on the remote system, but the application window appears on our local system. So we can use this remote GUI program on your local system as the way we use a locally installed program.
Clear? Now let us go ahead and see how to run remote GUI applications over SSH session.
Configure X11 Forwarding Using SSH In Linux
For the purpose of this guide, I will be using the following two systems:
- Remote server — CentOS 8 minimal server (No GUI).
- Local system — Ubuntu 20.04 LTS with Gnome DE.
Configuring X11 forwarding is trivial.
Make sure you have installed «xauth» on your remote serer system. If it is not installed, run the following command as root or sudo user:
Go to your remote system (in my case it is CentOS 8) and edit «/etc/ssh/sshd_config» file using your favorite editor:
Add/modify following line:
Configure X11 Forwarding Using SSH In Linux
Press ESC key and type :wq to save and close the file.
Restart sshd service to effect the changes:
Done! We have configured X11 forwarding.
Now go to your client system (in my case, it is Ubuntu 20.04) and access the remote server via SSH using command:
Here, -X option is used to enable X11 forwarding over SSH. Replace «[email protected]» with your remote server’s username and IP address.
You will see the following warning message at first time.
However, the .Xauthority file should be automatically generated during the first login, thus subsequent logins should be fine.
Next, launch any GUI applications from this SSH session. I already have installed Gedit graphical text editor in my CentOS 8 server, so I am going to launch it using command:
The gedit GUI window screen will now appear in your local system.
Run remote graphical applications over SSH session in Linux
You can interact with the Gedit application installed on the remote server using your local system’s display, mouse, and keyboard.
Even though my CentOS 8 server doesn’t have GUI desktop, I can be able to open Gedit graphical editor and use it from my local Ubuntu system. Here is the visual demo:
Configure X11 forwarding in Putty
If you use Putty client to access remote systems, enter your remote system’s IP or hostname in the Session tab:
Connect to remote system using Putty
Next, navigate to Connection -> SSH -> X11 and enable X11 forwarding option. Click Open to establish a new Putty session:
Configure X11 forwarding in Putty
Enter the username and password of the remote server. Once you connected to the remote system via Putty, launch any X application installed in the remote server.
Run graphical applications over Putty session
Start interacting with the remote GUI application from your local system!
Источник