Запуск x11vnc удаленно, когда сервер X уже запущен

Вопрос или проблема

У меня есть машина с ubuntu linux, на которую я уже вошел, и X сервер работает (он прошел менеджер входа, такой как gdm). Я могу получить доступ к этой машине через ssh. Моя цель — запустить x11vnc на этой машине и подключить его к уже работающему X серверу.

Когда я подключаюсь по ssh к машине и запускаю x11vnc, пишется:

X11 не удалось открыть X DISPLAY ":0", продолжить невозможно.

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

РЕДАКТИРОВАНИЕ: Я также попробовал x11vnc -find. На этот раз он не выдал эту ошибку и смог обнаружить, что клиент подключен:

Получено соединение от клиента x.x.x.x
...
wait_for_client: команда find display не удалась
wait_for_client: плохой ответ '
'

Таким образом, кажется, что команда -find просто откладывает неизбежное.

Спасибо,

Я использовал gnome, поэтому я просто предоставил x11vnc файл авторизации x, который использовал gnome. Это было сделано следующим образом:

x11vnc -xauth /var/lib/gdb/:0.Xauth -display :0

Я обнаружил, что на моем рабочем столе gentoo kde это прекрасно работает, когда kde уже запущен.

x11vnc -xauth /var/run/xauth/A:0-bHJFac -display :0 -passwd “password” -forever -shared

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

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

Сначала, по SSH, как root, я запустил сервер TigerVNC на машине на дисплее :1

# vncserver :1

(начинать как root было глупо)

Затем я подключился к этому дисплею с помощью TigerVNC с моего клиентского компьютера

Подключиться к: a.b.c.d:1

Теперь я в графическом интерфейсе как root (очень глупо). Я открыл терминал и запустил x11vnc от имени моего оригинального пользователя

# sudo -u milind x11vnc -many -display :0

Теперь я смог

Подключиться к: a.b.c.d:0

Готово! хотя и очень непрямым способом.

Для меня

Описание:    Debian GNU/Linux 6.0.5 (squeeze)
Версия:        6.0.5
Кодовое имя:       squeeze

apt-cache policy gdm3
gdm3:
  Установлено: 2.30.5-6squeeze4

это работало хорошо, даже если я входил удаленно через ssh:

su -c "x11vnc -auth /var/run/gdm3/auth-for-username*/database -display :0 -forever -passwd foo"

редактировать:
вы также можете использовать, например, ssvnc для комфортного использования vnc через ssh. Просто запустите x11vnc, как указано выше, но с параметром “-localhost”:

su -c "x11vnc -auth /var/run/gdm3/auth-for-username*/database -display :0 -forever -passwd foo -localhost"

тогда вы можете нажать “Использовать SSH” в скрипте ssvnc, и он подключится через ssh, поэтому нет необходимости, чтобы x11vnc слушал глобально!

Используйте x0vncserver вместо этого:

x0vncserver — это сервер TigerVNC, который делает любой X дисплей удаленно доступным через VNC, TigerVNC или совместимые просмотровые программы. В отличие от Xvnc(1),
он не создает виртуальный дисплей. Вместо этого он просто делится существующим X сервером (обычно тем, который подключен к физическому экрану).

Для моей ситуации моя машина автоматически вошла как UserX, и я вошел по ssh в машину и запускал команду x11vnc как UserY

Я использую

$ lsb_release -a
Нет доступных модулей LSB.
Идентификатор дистрибьютора: Ubuntu
Описание:    Ubuntu 22.04.4 LTS
Версия:    22.04
Кодовое имя:   jammy

Я обнаружил xauth с помощью

$ ps aux | grep -i auth
root         310  0.0  0.0      0     0 ?        I<   11:26   0:00 [nvme-auth-wq]
cdot        1692  0.6  0.3 3308976 104212 tty2   Sl+  11:28   0:01 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -nolisten tcp -background none -noreset -keeptty -novtswitch -verbose 3
cdot       11855  0.0  0.0  17868  2688 pts/0    S+   11:32   0:00 grep --color=auto -i auth

Затем я выполнил следующее в своей сессии telnet

$ x11vnc -xauth  /run/user/1000/gdm/Xauthority -display :0 -forever &

Теперь я удаленно просматриваю мою машину через vnc viewer по URL ip-адрес:порт

Ответ или решение

Как Запустить X11VNC Удаленно На Запущенном X Сервере

Введение

Запуск X11VNC на удаленной машине с уже запущенным X сервером может представлять определенные трудности, особенно когда у вас нет физического доступа к серверу. В этом руководстве мы рассмотрим, как правильно настроить x11vnc для работы с уже запущенным X сервером на Ubuntu и других дистрибутивах Linux.

Проблема

После подключения к машине по SSH и попытки запуска команды X11VNC предлагает сообщение об ошибке:

X11 was unable to open the X DISPLAY ":0", it cannot continue.

Это возникает из-за того, что X сервер требует соответствующего файла авторизации для подключения через VNC.

Решение

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

Шаг 1: Найдите файл X авторизации

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

  • /var/run/xauth
  • /run/user/<uid>/gdm/Xauthority
  • /home/<username>/.Xauthority

Чтобы найти его, вы можете использовать следующую команду:

ps aux | grep -i auth

Это выдаст список процессов, связанных с авторизацией. Обратите внимание на поле с файлом Xauthority.

Шаг 2: Запуск X11VNC с указанием файла авторизации

После того как местоположение файла авторизации было определено, вы можете запустить x11vnc с правильными параметрами:

x11vnc -xauth /путь/к/Xauthority -display :0 -forever -passwd "ваш_пароль" &

Здесь:

  • -xauth указывает путь к файлу Xauthority.
  • -display :0 указывает на дисплей, к которому мы подключаемся (обычно это :0 для первого дисплея).
  • -forever позволяет x11vnc продолжать работу даже после отключения клиентских соединений.
  • -passwd "ваш_пароль" задает пароль для доступа к VNC.

Шаг 3: Проверка доступа

После запуска x11vnc убедитесь, что он работает правильно, и что вы можете подключиться к вашему серверу с помощью VNC просмотра. Попробуйте подключиться, используя IP-адрес вашего сервера и порт 5900 (по умолчанию для дисплея :0 это 5900).

Например, в вашем VNC клиенте вы можете указать следующее:

ip-адрес:5900

Заключение

Использование x11vnc для подключения к уже запущенному X серверу является мощным инструментом для удаленного доступа к содержимому экрана. Следуя приведенным выше шагам, вы сможете легко выполнить подключение и начать работу с открытыми окнами на удаленной системе. Это особенно полезно для серверов, на которых уже есть активные графические сессии.

Если у вас возникают сложности или дополнительные вопросы, не стесняйтесь искать помощь в специализированных форумах или сообществах, посвященных Linux и удаленному доступу.

Оцените материал
Добавить комментарий

Капча загружается...