Wie richte ich x11vnc für den Zugriff mit dem grafischen Anmeldebildschirm ein?


50

Ich habe einen Server mit Ubuntu 12.10 und muss in der Lage sein, auf diesen Server zuzugreifen, ohne angemeldet zu sein.

Ich habe viele Lösungen gefunden, aber keine scheint mit 12.10 zu funktionieren.

Kann mir jemand Schritt für Schritt erklären, wie ich x11vncvor der Benutzeranmeldung den Start als Dienst konfiguriere, damit mir beim Herstellen einer Verbindung mit VNC ein grafischer Anmeldebildschirm angezeigt wird?

Ich bin neu in Linux. Bitte geben Sie in Ihren Antworten / Kommentaren so viele Details wie möglich an.

Vielen Dank


Die Menge all dieser Befehle und Konfigurationen, die ein durchschnittlicher Benutzer ausführen muss, um eine Verbindung zum Bildschirm eines Remote-Computers herzustellen, ist einfach lächerlich. Unter Windows funktioniert dies nur mit wenigen Mausklicks, obwohl die Remotedesktopfunktion nur bei teuren Editionen funktioniert. Ich habe ein paar Stunden verbracht und konnte VNC immer noch nicht automatisch starten lassen. Dies ist der Grund, warum Linux für Durchschnittsbenutzer ein unbeliebtes Betriebssystem bleibt Kontext.)
Damn Vegetables

Antworten:


43

Installieren Sie x11vnc:

sudo apt-get install x11vnc

Erstellen Sie ein Passwort für Ihren Benutzer:

x11vnc -storepasswd

Wenn Sie über ein SSH-Setup verfügen, können Sie damit x11vnc starten, vorausgesetzt, Sie sind bereits angemeldet. Denken Sie jedoch daran, es anzuweisen, Ihre Kennwortdatei zu verwenden:

x11vnc -usepw

Wenn Sie nicht eingeloggt sind, erhalten Sie eine Fehlermeldung mit der Erklärung:

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

Vorausgesetzt, Sie verwenden lightdm für die Anmeldung, um dieses Problem zu beheben, können Sie x11vnc mit dem folgenden Befehl starten:

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

Ich bin nicht sicher, ob dies die beste Idee ist, x11vnc als root auszuführen. Vielleicht könnte jemand mit einer Möglichkeit auf das Login zugreifen, ohne sudo zu benutzen.

Sobald dies ausgeführt wird, sollten Sie in der Lage sein, eine Verbindung mit einem vnc-Client wie krdc (für KDE) herzustellen. Vielleicht möchten Sie GNU Screen verwenden , um x11vnc am Laufen zu halten, ohne dass die ssh-Sitzung geöffnet sein muss

Ich konnte dies mithilfe von http://ubuntuforums.org/showthread.php?t=2039022 herausfinden .

Hier ist ein Beispiel für einen Upstart-Job, mit dem Sie ihn beim Start ausführen können. Es muss in /etc/init/x11vnc.conf abgelegt werden. (Beachten Sie, dass neuere Versionen von Ubuntu systemd verwenden, sehen Sie sich also die andere Antwort an, die ein Beispiel für systemd config enthält.):

# 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

Sobald Sie diese Datei erstellt haben, können Sie sie mit dem folgenden Befehl starten: sudo start x11vnc Sie können das Protokoll unter /var/log/upstart/x11vnc.log überprüfen


1
Sie können x11vncals normaler Benutzer ausgeführt werden, kein Problem. Beispiel: ssh an den Host x11vnc -safer -forever -display :0 2>&1 &senden und in einer tmux-Sitzung ausführen (bewährte Methode), unter der es ausgeführt wird $USER.
Terry Wang

Auch nur als Referenz, zu ändern , um das Ansichtsfenster: superuser.com/questions/270608/...
Wtower

2
Dies erklärt nicht, wie es automatisch gestartet werden soll (und ist eine häufige Voraussetzung für eine solche Funktion)
LovesTha

1
Hier finden Sie eine vollständige Liste der x11vnc-Optionen. Ich habe lange gebraucht
Gabriel Staples

1
Und hier finden Sie ein exzellentes Tutorial zum Einrichten auf einem Raspberry Pi mit automatischem Start beim Booten: megaleecher.net/Raspberry_Pi_VNC_Setup
Gabriel Staples

42

Die obigen Antworten lösen das Problem, obwohl einige Änderungen für Versionen von Ubuntu mit systemd (15.04+) wie folgt lauten:

  • Nutzen Sie die neuen -auth guessFunktionen von x11vnc - das hilft!
  • Update für systemd (nicht upstart)

Führen Sie zum Installieren Folgendes aus:

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

Fügen Sie dies in die Datei ein:

[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

Beginnen Sie dann mit:

sudo systemctl daemon-reload
sudo systemctl start x11vnc

Und stellen Sie sicher, dass der Dienst beim Booten startet:

sudo systemctl enable x11vnc

Auf bbs.archlinux.org/viewtopic.php?id=168756 wurde verwiesen, um Ratschläge zu Requires / Afters-Parametern zu erhalten
babelmonk

2
Warum ist diese Antwort nicht als die richtige Antwort markiert?
Cybex

1
Wenn es keine Anzeige überhaupt, dann kann man sich wünscht willkürliche Auflösung einzustellen: sudo xrandr --fb 1920x1080.
Orient

2
Es ist nicht selbstverständlich, dass x11vnc sofort funktioniert. Es ist empfehlenswert, einen Testbefehl einzugeben, bevor Sie sich an einen Dienst wenden, der bei einem Fehler alle 2 Sekunden neu gestartet wird. Ich verwende lightdm und xfce4 auf einem Ubuntu 17.10-Server mit kopfloser Cloud. Restart-secsollte seinRestartSec
Ray Foss

1
Ubuntu 18.04 scheint auch eher zu wollen RestartSecals Restart-sec.
Scott Willeke

14

Hier ist wie:

  1. Installieren Sie den X11VNC-Server (oder über Ubuntu Software Center -> X11VNC Server)

    sudo apt-get install x11vnc
    
  2. Erstellen Sie eine VNC-Kennwortdatei.

    sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass
    
  3. Erstellen Sie eine Jobdatei im Editor nano (oder gedit, leafpad usw.).

    sudo nano /etc/init/x11vnc.conf
    
  4. Fügen Sie dies in die Datei ein:

    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. Speicher die Datei. Sie haben einen Job für das Upstart-Ereignis login-session-start erstellt .

  6. Ubuntu neu starten.

Das ist es! Sie sollten jetzt in der Lage sein, sich bereits vor der Anmeldung mit einem beliebigen VNC-Client zu verbinden.


Aber wie bringt man es zum Laufen, wenn lightdm die Auth-Datei erst erstellt, wenn ein Monitor angeschlossen ist?
LovesTha

@didibus Ich habe versucht, dies in Lubuntu zu tun, kann aber x11vncnicht jedes Mal automatisch starten . Es wird nicht einmal als Service gestartet. Die Dateisyntax ist korrekt und ich kann gut mit x11vncder Shell beginnen. Was vermisse ich?
Linuxgringo

Dies funktioniert auch auf Lubuntu. Insbesondere LeMakers Version von Lubuntu für den Banana Pi.
AaronD

3

babelmonks antworten als bash script, kopieren und speichern als x11vnc.sh & starten mit 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

Wenn Sie eine andere Antwort verbessern möchten, schlagen Sie bitte eine Änderung vor und erstellen Sie keine neue Antwort.
David Foerster

Füge dies gerne zu meiner hinzu, wenn du ein edit @ nix-badweasel
babelmonk


1

Hier funktioniert eine Konfiguration für sddm(für KDE 5). Derzeit -auth guessfunktioniert nicht für sddm, die Auth-Datei ist jedes Mal anders, so dass wir so etwas brauchen -auth /var/run/sddm/*. Der Service sieht aus wie

[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

Ich habe es nach setzen multi-user.target, wenn sie nach display-manager.service, x11vncnicht Auth - Datei nicht finden kann, vielleicht sddmspäter Auth - Datei erzeugt. Dies ist auf Manjaro 18 getestet.


0

Ich benutze meine eigene Shell: 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

in die Datei:

/etc/init/x11vnc.conf

Es wird beim Booten automatisch gestartet, auch wenn auf dem Anmeldebildschirm ein Kennwort abgefragt wird.


0

Installieren Sie das x11vnc-Paket

#sudo apt-get install x11vnc

Dann setzen Sie das Passwort

#x11vnc -usepw

Erstellen Sie dann ein Startskript für x11vnc

#sudo nano /etc/x11vnc.sh

Im Ordner:

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

Dann speichere

#sudo chmod 777 /etc/x11vnc.sh

Fügen Sie dann die Skriptdatei zum Control Center hinzu => Anwendung starten. Klicken Sie dann auf Hinzufügen

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

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

> Comment------service

Dies muss für alle Benutzer hinzugefügt werden

Dies wird nur nach der Benutzeranmeldung ausgeführt

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.