28
November
2023
VNC-Server x11vnc als Dienst starten
1:20

VNC-Server x11vnc als Dienst starten

28 November 2023 1:20

x11vnc ist ein Remote-Desktop-Programm, das in jeder Ubuntu-Distribution enthalten ist. Als Nächstes erkläre ich Ihnen, wie Sie x11vnc für die Ausführung als Dienst konfigurieren.

Einführung

VNC ist ein Remote-Desktop ähnlich wie Radmin Server, nur für Linux. Auch VNC ist eine bessere Alternative zu XRDP.

Installation des x11vnc- und VNC-Plugins

sudo apt update && sudo apt install x11vnc remmina-plugin-vnc

Installieren eines VNC-Anzeigeclients

sudo apt install remmina

1) Erster Start des Programms – als Anwendung

1.1) Generieren Sie ein Passwort

x11vnc -storepasswd

Geben Sie das Passwort zweimal ein (kann sich von jedem Passwort unterscheiden und einfach sein) und drücken Sie „y“

Das Passwort wird in der Datei /home/USERNAME/.vnc/passwd gespeichert

1.2) Starten Sie das x11vnc-Programm als Konsolenanwendung, um den Betrieb zu überprüfen

Hier ist eine vorgefertigte Zeile zum Starten von VNC X11 als Anwendung.

x11vnc -auth guess -forever -loop -noxdamage \
-repeat -rfbauth /home/USERNAME/.vnc/passwd \

-rfbport 5900

Dabei ist für den ersten Start eine Schätzung von -auth erforderlich, ohne den Speicherort der Xauth-Datei zu kennen
-forever -loop -repeat – um das Programm in einer Endlosschleife auszuführen
-rfbauth /home/USERNAME/.vnc/passwd – Passwortdatei für VNC
-rfbport 5900 – externer Port, den das Programm abhört

Der Befehl kann als SH-Datei verwendet werden.

#!/bin/sh
x11vnc -authgue -forever -loop -noxdamage -repeat -rfbauth /home/vladimir/.vnc/passwd -rfbport 5900

Nach dem Start beginnt eine Endlosschleife.

Führen Sie in einem anderen Fenster zunächst netstat mit Schlüsseln aus, die Ports im LISTENING-Status anzeigen

sudo netstat -plnt

Wenn der Port 5900 in einem Staat vorhanden ZUHÖREN, starten Sie remmina und konfigurieren Sie das Plugin für die Anzeige von VNC:

*Neue Verbindung – Typ VNC*
Server – 127.0.0.1**

Sie werden aufgefordert, Ihr VNC-Passwort einzugeben – geben Sie es ein. Der Desktop wird angezeigt.

2) Konvertieren Sie x11vnc in einen Dienst

Wir benötigen Kenntnisse über die Variablen:

  • Dateipfad für den -auth-Schlüssel
  • Anzeigebezeichnung für die Taste -Anzeige
  • Der Pfad zur VNC-Passwortdatei muss in /root/.... geändert werden.

    2.1) Ermitteln Sie den Wert der Variablen für den Schlüssel -auth

Dazu müssen Sie den Befehl ps ausführen, um Arbeitsprozesse mit vollständigen Pfaden auszugeben

sudo ps wwwwaux | grep auth

Wir suchen nach der Zeile, in der -auth erwähnt wird:

/usr/lib/xorg/Xorg -core :0 -seat Seat0 -auth /var/run/lightdm/root/:0-nolisten tcp

Hier habe ich den Pfad für den Schalter -auth fett hervorgehoben.
Jetzt stattdessen in der Schlange -auth Vermutung angegeben werden kann -auth /var/run/lightdm/root/:0

2.2) Ermitteln Sie die Anzeigenummer mit der gleichen Option -auth schätze, es wird unten geschrieben. Port 5900 verwendet die Anzeige :0, also im Parameter -display :0, либо -display compname:0.

2.3) Wir generieren ein Passwort aus dem Benutzer su in der passwd-Datei, das im Ordner /root/.vnc gespeichert wird:

sudo x11vnc -storepasswd

Enter VNC password:
Verify password:
Write password to /root/.vnc/passwd? [y]/n

Drücken Sie für die letzte Frage die Eingabetaste (standardmäßig - y).

3) In einem Ordner erstellen/usr/local/bin/unsere Shell-Datei x11vnc-lightdm, wodurch das x11vnc-Programm gestartet wird, wenn der x11vnc-Dienst gestartet wird:

sudo nano /usr/local/bin/x11vnc-lightdm

Wir übertragen die zuvor konfigurierten x11vnc-Parameter in den Text der Datei, in die Zeile $OPTS.

Dateiinhalte /usr/local/bin/x11vnc-lightdm:

#!/bin/bash
OPTS=
exec /usr/bin/x11vnc\
    $OPTS\
         -rfbauth /root/.vnc/passwd -rfbport 5900 \
         -forever -loop -bg -ncache -auth /var/run/lightdm/root/:0 -display :0

(oder „automatisch“: statt -auth /var/run/lightdm/root/:0 можно указать -auth guess).

4) Erstellen Sie eine SystemD-Unit-Datei, um den x11vnc-Dienst zu starten:

sudo nano /etc/systemd/system/x11vnc.service

Sein Inhalt ist wie folgt:

[Einheit]
Beschreibung=VNC-Server für X11
Erfordert=graphical.target
After=graphical.target

[Dienstleistung]
ExecStart=/usr/local/bin/x11vnc-lightdm

[Installieren]
WantedBy=graphical.target

5) Aktivieren und starten Sie den neuen Dienst x11vnc.service

sudo systemctl enable x11vnc.service
sudo systemctl start x11vnc.service

6) Diagnose: Überprüfen Sie den Status von x11vnc.service und den LISTENING-Status auf VNC-Port 5900

sudo systemctl status x11vnc.service

Wenn der Dienst ausgeführt wird (aktiv), überprüfen Sie, ob er Port 5900/TCP überwacht:

sudo netstat -plnt

Bei korrekter Konfiguration ist der Listening-Port 5900 LISTEN sichtbar:

Aktive Internetverbindungen (nur Server)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Programmname

tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 35821/x11vnc

7) Erste Verbindung mit Remmina zu VNC auf Localhost

Die erste Verbindung auf demselben PC ist eine Testverbindung.
Als Remmina erstellen wir eine VNC-Verbindung zu locahost und klicken auf „Speichern und verbinden“.
Oder doppelklicken Sie auf die VNC-Verbindung, die Sie zum Localhost-Server erstellt haben.

Sie werden zur Eingabe des Serverkennworts aufgefordert. Geben Sie das Server-Passwort ein, das als Root festgelegt wurde (in Abschnitt 2.3).

8) Öffnen Sie Port 5900 (oder Ihren eigenen) auf der persönlichen Firewall von ufw

sudo ufw allow 5900/tcp

9) Jetzt können Sie eine Fernverbindung über VNC herstellen

Von einem entfernten PC oder „Weiterleitung“ von Port 5900 vom Router. Oder wir organisieren ein VPN, dann erfolgt die Remmina-Verbindung an die PC-Adresse im lokalen Netzwerk, zum Beispiel 192.168.1.100.

Der Dienst x11vnc.service startet beim Booten des PCs und ist unabhängig davon, ob der Benutzer angemeldet ist oder nicht.

Auf dem Client:
Ich habe eine neue Verbindung in Remmina erstellt.
(Achtung: Die Mindestauflösung des Client-Bildschirms beträgt 1200 x 900!).

vnc-connect

*Name – VNC-Startseite

  • Protokoll -VNC Remmina-Modul
  • Server – 192.168.99.11 (durch Ihren eigenen ersetzen)
  • Benutzerpasswort – das Passwort des VNC-Servers, das durch den Befehl festgelegt wurde sudo x11vnc -storepasswd(Ziffer 2.3)
  • Farbtiefe – High Color (16 Bit)
  • Qualität – am besten (am langsamsten)

Letzte Aktion:Speichern und verbinden.



Verwandte Veröffentlichungen