Ich habe einen Server mit Ubuntu 12.10 und muss in der Lage sein, per Fernzugriff auf diesen Server zuzugreifen, ohne eingeloggt zu sein.
Ich habe viele Lösungen gefunden, aber keine scheint mit 12.10 zu funktionieren.
Kann mir jemand eine Schritt-für-Schritt-Anleitung geben, wie ich "x11vnc" so konfiguriere, dass es als Dienst (vor der Benutzeranmeldung) gestartet wird, so dass ich bei der Verbindung mit VNC einen grafischen Anmeldebildschirm erhalte?
Ich bin neu in Linux, also bitte geben Sie so viele Details wie möglich in Ihren Antworten/Kommentaren.
Vielen Dank
Installieren Sie x11vnc:
sudo apt-get install x11vnc
Erstellen Sie ein Passwort für Ihren Benutzer:
x11vnc -storepasswd
Wenn Sie ssh eingerichtet haben, können Sie es verwenden, um x11vnc zu starten, vorausgesetzt, Sie sind bereits angemeldet:
x11vnc -usepw
Wenn Sie nicht eingeloggt sind, erhalten Sie eine Fehlermeldung mit der entsprechenden 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
Angenommen, Sie verwenden lightdm für die Anmeldung, können Sie dieses Problem beheben, indem Sie x11vnc mit dem Befehl starten:
sudo x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth /var/run/lightdm/root/:0 -usepw
Ich bin mir nicht sicher, ob es die beste Idee ist, x11vnc als root zu starten. Vielleicht kann jemand einen Weg finden, auf das Login zuzugreifen, ohne sudo zu benutzen.
Sobald dies läuft, sollten Sie in der Lage sein, sich mit einem vnc-Client wie krdc (für KDE) zu verbinden. Sie könnten GNU Screen verwenden, um x11vnc laufen zu lassen, ohne dass die ssh-Sitzung geöffnet sein muss
Ich konnte dies mit http://ubuntuforums.org/showthread.php?t=2039022 herausfinden.
Hier ist ein Beispiel für einen Upstart-Job, den Sie verwenden können, um ihn beim Start auszuführen. Er muss in /etc/init/x11vnc.conf eingetragen werden. (Beachten Sie, dass neuere Versionen von Ubuntu systemd verwenden, also lesen Sie die andere Antwort, die eine Beispielkonfiguration für systemd 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 starten, indem Sie Folgendes ausführen: sudo start x11vnc Sie können das Protokoll überprüfen unter: /var/log/upstart/x11vnc.log
Die obigen Antworten lösen das Problem, allerdings mit einigen Änderungen für Ubuntu-Versionen mit systemd (15.04+), wie folgt:
-auth guess
in x11vnc - das hilft!Führen Sie das Folgende aus, um zu installieren:
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
Dann beginnen Sie mit:
sudo systemctl daemon-reload
sudo systemctl start x11vnc
Und stellen Sie sicher, dass der Dienst beim Booten startet:
sudo systemctl enable x11vnc
Und so geht's:
Installieren Sie den X11VNC-Server (oder über Ubuntu Software-Center -> X11VNC-Server)
sudo apt-get install x11vnc
Erstellen Sie eine VNC-Passwortdatei.
sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass
Erstellen Sie eine Job-Datei im Editor nano (oder gedit, leafpad etc.).
sudo nano /etc/init/x11vnc.conf
Fügen Sie dies in die Datei ein:
start on login-session-start
Skript
/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
Skript beenden
Speichern Sie die Datei. Sie haben einen Auftrag für das Upstart-Ereignis login-session-start erstellt.
Starten Sie Ubuntu neu.
Das war's! Sie sollten nun in der Lage sein, sich mit jedem VNC-Client zu verbinden, noch bevor Sie sich anmelden.