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

Удаленный запуск x11vnc, когда X-сервер уже запущен

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

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

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

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

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

Got connection from client x.x.x.x
...
wait_for_client: find display cmd failed
wait_for_client: bad reply '
'

Похоже, что команда -find просто отсрочивает неизбежное.

Спасибо,

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

x11vnc -xauth / var / run / xauth / A: 0-bHJFac -display: 0 -passwd "пароль" -forever -shared

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

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

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

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

Во-первых, через SSH как root я запустил сервер TigerVNC на машине с отображением: 1

# vncserver :1

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

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

Connect to: a.b.c.d:1

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

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

Теперь я смог

Connect to: a.b.c.d:0

Готово! хотя и весьма окольным образом.

Для меня

Description:    Debian GNU/Linux 6.0.5 (squeeze)
Release:        6.0.5
Codename:       squeeze

apt-cache policy gdm3
gdm3:
  Installiert: 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-сервер (обычно тот, который подключен к физическому экрану).