Вопрос или проблема
У меня есть машина с 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 и удаленному доступу.