LINUX.ORG.RU

x11vnc + gdm

 , , ,


2

1

ОС Арчик, x11vnc работает через xinetd, конфиг с ноута на котором все работает ниже, но сразу замечу что там слим

service x11vnc
{
        socket_type     = stream
        protocol        = tcp
        log_type        = FILE /var/log/x11vnc.log
        log_on_success  = HOST EXIT DURATION
        wait            = no
        user            = rooе
        server          = /usr/bin/x11vnc
        server_args     = -inetd -display :0 -auth /var/run/slim.auth -o /var/log/x11vnc.log -q -passwdfile /etc/.vnc/passwd
        port            = 48998
        type            = UNLISTED
}
на десктопе используется GDM, как говорят нам маны арчвики для GDM нужно использовать вот такую конструкцию -display :0 -auth /var/lib/gdm/:0.Xauth, но оно нифига не пашет, также еще пробовал писать -auth /home/igor/.Xauthority и -auth guess - так вообще коннекшн рефьюз, клиент пишет что соеденение сброшено а на сервере лог ноет что X11vnc не смог открыть X Display и дает кучу рекомендаций. Перепробовав все что он пишет обращаюсь за помощью к ЛОРовцам так как уже хз что делать.

ПС если в консоли под обычным юзверем запускать вот так x11vnc -display :0 -auth var/lib/gdm/:0.Xauth то все опять же работает, прям Египетская сила...

★★★

Последнее исправление: cetjs2 (всего исправлений: 3)

Я не понял, на кой черт тебе gdm? Если на удаленном компьютере иксовая сессия не запущена, ты хочешь ее запустить и оставить что ли?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

На удаленном (в данный момент source) компе иксы запущены, нужно чтоб ВНС работал до входа в окружение пользователя.

CHIPOK ★★★
() автор топика
Ответ на: комментарий от CHIPOK

Я арч никогда не пользовал. Ты сам проверял, что gdm пишет куку именно в /var/lib/gdm/:0.Xauth ? Посмотри через командные аргументы процесса, куда точно он пишет.

А то, что от пользователя запускается, при указании данной куки (если на самом деле у нее другой путь) - то как вариант, он может fallback'ать на пользовательский .Xauthority (если этот пользователь уже залогинен в текущей сессии gdm, конечно), поэтому и работает.

Соответственно, когда пытается запустить через xinetd, если указанный в конфиге /var/lib/gdm/:0.Xauth не соотвествует реальности, то облом, так как вряд-ли root может быть залогинен в gdm, и иметь актуальный .Xauthority в этот момент.

Зайди удаленно на этот комп (через ssh, но без перенаправления X'ов), до того как какой-нть пользователь залогинился в сессию gdm, и проверь куда точно gdm пишет куку.

boneshaker
()
Ответ на: комментарий от boneshaker

Да, и еще в пользу того, что кука может и не быть в /var/lib/gdm/:0.Xauth

если в консоли под обычным юзверем запускать вот так x11vnc -display :0 -auth var/lib/gdm/:0.Xauth

Обычному юзеру прав не хватит прочитать сессионную куку, так что, возможно, в данном случае, был fall back на ~/.Xauthority Но это, конечно, если пользователь уже был залогинен в текущей сессии gdm.

В общем, мой основной вариант - сессионная кука находится (создается) не в /var/lib/gdm/:0.Xauth А где именно, надо смотреть по командным аргументам процесса иксового сервера.

boneshaker
()
Ответ на: комментарий от boneshaker

будьте добры подсказать как смотреть

надо смотреть по командным аргументам процесса иксового сервера

CHIPOK ★★★
() автор топика
Ответ на: комментарий от CHIPOK
ps auxww | grep auth

или сразу посмотреть X'овую комнадную строку (вместо X может быть Xorg, зависит от того как называется иксовый сервер в дистрибутиве):

for pid in $(pgrep X); do cat /proc/$pid/cmdline; done

нужно смотреть «auth»

boneshaker
()
Ответ на: комментарий от boneshaker

/usr/bin/Xorg:0-backgroundnone-verbose-auth/var/run/gdm/auth-for-gdm-mbUZQ1/database-seatseat0-nolistentcpvt1

CHIPOK ★★★
() автор топика
Ответ на: комментарий от boneshaker

root 342 3.9 2.0 259748 74216 tty1 Ssl+ 10:12 17:47 /usr/bin/Xorg :0 -background none -verbose -auth /var/run/gdm/auth-for-gdm-mbUZQ1/database -seat seat0 -nolisten tcp vt1

CHIPOK ★★★
() автор топика
Ответ на: комментарий от boneshaker

Кстати, вот эта часть «mbUZQ1» возможно рандомная при каждом старте gdm, тогда надо будет простенький враппер для x11vnc написать, который будет сначала искать правильную куку, а потом уже запускать сам x11vnc с указанием последней.

boneshaker
()
Ответ на: комментарий от boneshaker

спасибо за помощь, х11 это умеет Добавил вот такую строчку и все понеслось, хе, таки поборол.

-env FD_XDM=1 -auth guess

CHIPOK ★★★
() автор топика
Ответ на: комментарий от boneshaker

-auth /var/run/gdm/auth-for-gdm-mbUZQ1/database

так тоже работает. Спасибо за помощь! :) ПС. Люблю ЛОР за обилие умных людей.

CHIPOK ★★★
() автор топика
Ответ на: комментарий от boneshaker

Конечно пригодится, x11vnc незаменимая вещь на десктопах, особенно когда компов много и географически разброшены. На сусе 11 например x11vnc работает вообще без параметра -auth.

CHIPOK ★★★
() автор топика
Ответ на: комментарий от boneshaker

еще вот такой комбо накомал

x11vnc -noxdamage -many -display :0 -auth /var/run/gdm/$(sudo ls /var/run/gdm | grep $(whoami))/database -forever -bg

CHIPOK ★★★
() автор топика
26 января 2016 г.

закину рабочий конфиг для slim + systemd на нестандартном порту

$ cat /etc/systemd/system/x11vnc.service 
[Unit]
Description="x11vnc"
Requires=display-manager.service
After=display-manager.service

[Service]
#Type=forking
ExecStart=/usr/bin/x11vnc -xkb -noxrecord -noxfixes -noxdamage -auth /var/run/slim.auth  -display :0 -shared -dontdisconnect -rfbauth /etc/.vncpass -rfbport 48888
ExecStop=/usr/bin/killall x11vnc
Restart=on-failure

[Install]
WantedBy=multi-user.target
Alias=vnc.service

CHIPOK ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.