Як налаштувати x11vnc для доступу з графічним екраном входу?


50

У мене є сервер під управлінням Ubuntu 12.10 і мені потрібно мати змогу віддалено від цього сервера без входу в систему.

Я знайшов багато рішень, але жодне, здається, не працює з 12.10.

Чи може хтось дати мені покрокові інструкції, як налаштувати x11vncзапуск сервісу (до входу користувача), щоб при підключенні до VNC мені було представлено графічний екран входу?

Я новачок у Linux, тому, будь ласка, дайте якомога більше деталей у ваших відповідях / коментарях.

Дякую


Обсяг усіх цих команд та конфігурацій, який середній користувач повинен зробити лише для підключення до екрану віддаленого комп'ютера, просто смішний. У Windows він просто працює ... за допомогою декількох клацань миші, хоча функція віддаленого робочого столу працює лише у дорогих версіях. Я провів кілька годин, і досі не міг змусити VNC запускатися автоматично. Ось чому Linux залишатиметься непопулярною ОС для пересічних користувачів ... (Будь ласка, не вказуйте на кшталт "Linux використовується в Android!" Або щось таке. контекст.)
Чортові овочі

Відповіді:


43

Встановити x11vnc:

sudo apt-get install x11vnc

Створіть пароль для свого користувача:

x11vnc -storepasswd

Якщо у вас є налаштування ssh, ви можете використовувати його для запуску x11vnc, якщо ви вже ввійшли в систему, але не забудьте сказати, щоб він використовував файл вашого пароля:

x11vnc -usepw

Якщо ви не авторизовані, ви отримаєте помилку з поясненням:

If NO ONE is logged into an X session yet, but there is a greeter login
program like "gdm", "kdm", "xdm", or "dtlogin" running, you will need
to find and use the raw display manager MIT-MAGIC-COOKIE file.
Some examples for various display managers:

 gdm:     -auth /var/gdm/:0.Xauth
          -auth /var/lib/gdm/:0.Xauth
 kdm:     -auth /var/lib/kdm/A:0-crWk72
          -auth /var/run/xauth/A:0-crWk72
 xdm:     -auth /var/lib/xdm/authdir/authfiles/A:0-XQvaJk
 dtlogin: -auth /var/dt/A:0-UgaaXa

Якщо припустимо, що ви використовуєте lightdm для входу, ви можете виправити цю проблему, ви можете запустити x11vnc за допомогою команди:

sudo x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth /var/run/lightdm/root/:0 -usepw

Я не впевнений, що це найкраща ідея запустити x11vnc як root. Можливо, хтось міг би відредагувати спосіб доступу до логіну, не використовуючи sudo.

Після запуску ви зможете підключитися за допомогою клієнта vnc, такого як krdc (для KDE). Ви можете скористатися екраном GNU, щоб продовжувати працювати x11vnc, не вимагаючи відкриття сеансу ssh

Мені вдалося це зрозуміти за допомогою http://ubuntuforums.org/showthread.php?t=2039022 .

Ось зразок початкової роботи, який ви можете використовувати для запуску при запуску. Його потрібно помістити в /etc/init/x11vnc.conf. (Зверніть увагу, що новіші версії Ubuntu використовують systemd, тому дивіться інший відповідь, що має зразок systemd config):

# description "start and stop x11vnc"

description "x11vnc"

start on runlevel [2345]
stop on runlevel [^2345]

console log
#chdir /home/
#setuid 1000
#setgid 1000

respawn
respawn limit 20 5

exec x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth /var/run/lightdm/root/:0 -usepw

Після створення цього файлу можна запустити його, запустивши: sudo start x11vnc Ви можете перевірити журнал за адресою: /var/log/upstart/x11vnc.log


1
Ви можете працювати x11vncяк звичайний користувач, без проблем. Наприклад: ssh для хоста та запустіть x11vnc -safer -forever -display :0 2>&1 &у tmux сесії (хороша практика), він запуститься під $USER.
Террі Ван

Крім того, лише для довідки, щоб змінити вікно перегляду: superuser.com/questions/270608/…
Wtower

2
Це не пояснює, як зробити його автоматичним запуском так, як вимагали (і загальна вимога до такої функції)
LovesTha

1
Тут ви знайдете повний список параметрів x11vnc. Мені знадобилося багато часу, щоб знайти це: karlrunge.com/x11vnc/x11vnc_opts.html
Габріель

1
І дивіться тут чудовий підручник із налаштування цього на Raspberry Pi з автоматичним запуском під час завантаження: megaleecher.net/Raspberry_Pi_VNC_Setup
Габріель

42

Вищенаведені відповіді вирішують проблему, хоча пара змін у версіях Ubuntu з systemd (15.04+):

  • Скористайтеся новою -auth guessфункціональністю в x11vnc - що допомагає!
  • Оновлення для systemd (не на початку)

Виконайте наступне, щоб встановити:

sudo apt-get install x11vnc
sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass
# for Ubuntu 15.04+
sudo nano /lib/systemd/system/x11vnc.service
# for Ubuntu 16.10+
sudo nano /etc/systemd/system/x11vnc.service

Вставте це у файл:

[Unit]
Description="x11vnc"
Requires=display-manager.service
After=display-manager.service

[Service]
ExecStart=/usr/bin/x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth guess -rfbauth /etc/x11vnc.pass
ExecStop=/usr/bin/killall x11vnc
Restart=on-failure
Restart-sec=2

[Install]
WantedBy=multi-user.target

Потім почніть з:

sudo systemctl daemon-reload
sudo systemctl start x11vnc

І переконайтеся, що послуга починається під час завантаження:

sudo systemctl enable x11vnc

Посилання на bbs.archlinux.org/viewtopic.php?id=168756 для отримання деяких порад про параметри «Потрібні / післяписи»
babelmonk

2
чому ця відповідь не позначена як правильна відповідь?
Кібекс

1
Якщо немає відображення на всіх, то один може знадобитися встановити довільне дозвіл: sudo xrandr --fb 1920x1080.
Орієнт

2
Це не дана x11vnc запрацює негайно. Було б хорошою ідеєю надати команду тестування, перш ніж звернутися в службу, яка перезапускається після відмови кожні 2 секунди. Я використовую lightdm та xfce4 на безхмуровому хмарному сервері Ubuntu 17.10. Restart-secмає бутиRestartSec
Рей Фосс

1
Ubuntu 18.04 також, здається, хоче RestartSec, ніж Restart-sec.
Скотт Віллеке

14

Ось як:

  1. Встановіть сервер X11VNC (або через Центр програмного забезпечення Ubuntu -> Сервер X11VNC)

    sudo apt-get install x11vnc
    
  2. Створіть файл пароля VNC.

    sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass
    
  3. Створіть файл завдання в редакторі nano (або gedit, leafpad тощо).

    sudo nano /etc/init/x11vnc.conf
    
  4. Вставте це у файл:

    start on login-session-start
    
    script
    
    /usr/bin/x11vnc -xkb -forever -auth /var/run/lightdm/root/:0 -display :0 -rfbauth /etc/x11vnc.pass -rfbport 5900 -bg -o /var/log/x11vnc.log
    
    end script
    
  5. Збережіть файл. Ви створили завдання для початку реєстрації сесії Upstart .

  6. Перезапустіть Ubuntu.

Це воно! Тепер ви повинні мати можливість з'єднатися з будь-яким клієнтом VNC ще до входу.


Але як змусити його працювати, коли lightdm не створює файл auth, поки не підключено монітор?
LovesTha

@didibus Я намагався зробити це в Lubuntu, але x11vncне вдається автоматично запуститися. З цього питання він навіть не розпочнеться як послуга. Синтаксис файлів правильний, і я можу почати x11vncз оболонки просто чудово. Що я пропускаю?
linuxgringo

Це працює і на Lubuntu. Зокрема, версія Lubuntu LeMaker для Banana Pi.
AaronD

3

babelmonks відповідають як скрипт bash, скопіюйте та збережіть як x11vnc.sh та запустіть з sudo bash /path/to/file/x11vnc.sh (вибачте, у вас не вистачає реп., щоб розмістити коментар)

#!/bin/bash
#install x11vnc & set password
apt-get install x11vnc -y
x11vnc -storepasswd 123456 /etc/x11vnc.pass
#create config file for  system service
cat > /lib/systemd/system/x11vnc.service <<-EOF
[Unit]
Description="x11vnc"
Requires=display-manager.service
After=display-manager.service

[Service]
 ExecStart=/usr/bin/x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth guess -rfbauth /etc/x11vnc.pass
ExecStop=/usr/bin/killall x11vnc

[Install]
WantedBy=multi-user.target
EOF
#restart new services &  enable on boot
systemctl daemon-reload
systemctl start x11vnc
systemctl enable x11vnc

Якщо ви хочете вдосконалити іншу відповідь, будь ласка, запропонуйте її змінити та не створювати нову відповідь.
Девід Фоерстер

З радістю додамо це до моїх, якщо ви хочете створити правки @ nix-badweasel
babelmonk


1

Ось конфігурація працює для sddm(для KDE 5). Наразі -auth guessце не працює sddm, файл auth кожен раз відрізняється, тому нам потрібно щось подібне -auth /var/run/sddm/*. Послуга виглядає так:

[Unit]
Description="x11vnc"
After=multi-user.target

[Service]
ExecStart=/bin/sh -c "/usr/bin/x11vnc -xkb -noxrecord -display :0 -auth /var/run/sddm/* -rfbauth /etc/x11vnc.pass"
ExecStop=/usr/bin/killall x11vnc

[Install]
WantedBy=multi-user.target

Я повинен сказати це multi-user.target, якщо після display-manager.service, x11vncне вдалося знайти файл автентичності, можливо, sddmгенерує файл автентифікації пізніше. Це перевірено на Manjaro 18.


0

Я використовую власну оболонку: https://github.com/dvdvideo1234/UbuntuBatches/tree/master/x11VNC

start on login-session-start

script

sudo /usr/bin/x11vnc -xkb -auth /var/run/lightdm/root/:0 -noxrecord -noxfixes -noxdamage -rfbauth /var/srv/x11vnc/x11vnc.pass -forever -bg -rfbport <your_port> -o /var/srv/x11vnc/x11vnc.log

end script

у файл:

/etc/init/x11vnc.conf

Це робить його автоматичним запуском під час завантаження, навіть на екрані входу він запитує пароль.


0

Встановити пакет x11vnc

#sudo apt-get install x11vnc

Потім встановіть пароль

#x11vnc -usepw

Потім створіть сценарій запуску для x11vnc

#sudo nano /etc/x11vnc.sh

У файлі:

/usr/bin/x11vnc -bg -forever -shared -reopen -usepw

Потім збережіть

#sudo chmod 777 /etc/x11vnc.sh

Потім додайте файл сценарію до Центру управління => Запуск програми та натисніть кнопку Додати

> Name-----------x11vnc

> Command-----<map the script file

> Comment------service

Це потрібно обов'язково додати для всіх користувачів

Це запуститься лише після входу користувача

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.