TASIOMIND.DEV — OPERATIONAL▸▸▸FULL STACK DEVELOPER @ GWQ SERVICEPLUS AG▸▸▸FOUNDER — K8SGPT.AI▸▸▸OPEN SOURCE: ACTIVE▸▸▸DISTRIBUTED SYSTEMS / KUBERNETES / AI▸▸▸RUST + GO + PYTHON▸▸▸FIELD TESTED / STATUS — NOMINAL▸▸▸LOCATION: EUROPE/BERLIN▸▸▸TASIOMIND.DEV — OPERATIONAL▸▸▸FULL STACK DEVELOPER @ GWQ SERVICEPLUS AG▸▸▸FOUNDER — K8SGPT.AI▸▸▸OPEN SOURCE: ACTIVE▸▸▸DISTRIBUTED SYSTEMS / KUBERNETES / AI▸▸▸RUST + GO + PYTHON▸▸▸FIELD TESTED / STATUS — NOMINAL▸▸▸LOCATION: EUROPE/BERLIN▸▸▸

Installation eines VNC-Servers auf Armbian mit x11vnc

February 28, 2025

Diese Anleitung beschreibt die Installation und Konfiguration von x11vnc auf einem Armbian-System. x11vnc ist ein VNC (Virtual Network Computing)-Server, der im Gegensatz zu anderen VNC-Servern wie TigerVNC oder TightVNC keine virtuelle Desktop-Sitzung startet, sondern eine bestehende physische X-Display-Sitzung spiegelt.

Dies ist ideal für Szenarien, in denen ein Gerät (z.B. ein Orange Pi) an einen Monitor angeschlossen ist und man aus der Ferne genau dieselbe Sitzung sehen und steuern möchte.


1. Installation

Aktualisieren Sie die Paketlisten und installieren Sie x11vnc:

code
sudo apt update
sudo apt install -y x11vnc

2. Passwort für den VNC-Zugang festlegen

Erstellen Sie ein Passwort, das für die Authentifizierung von VNC-Clients verwendet wird.

code
x11vnc -storepasswd

Dieser Befehl speichert das verschlüsselte Passwort in der Datei ~/.vnc/passwd.


3. Manueller Start des VNC-Servers

Für einen ersten Test können Sie den Server manuell starten.

code
x11vnc -auth guess -forever -shared -rfbauth ~/.vnc/passwd
  • -auth guess: Versucht, den korrekten X-Display-Authentifizierungs-Cookie zu finden.
  • -forever: Hält den Server aktiv, auch nachdem sich der erste Client getrennt hat.
  • -shared: Erlaubt mehreren Clients, sich gleichzeitig zu verbinden.
  • -rfbauth ~/.vnc/passwd: Verwendet die zuvor erstellte Passwortdatei.

Der VNC-Server lauscht standardmäßig auf Port 5900. Sie können sich nun mit einem VNC-Client (z.B. Remmina, RealVNC Viewer) mit der IP-Adresse Ihres Armbian-Geräts verbinden (z.B. 192.168.1.100:5900).


4. Autostart mit systemd einrichten

Um x11vnc automatisch nach dem Systemstart zu starten, erstellen Sie eine systemd-Service-Datei.

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

Fügen Sie folgenden Inhalt ein. Passen Sie den Pfad zur Passwortdatei an Ihren Benutzernamen an (ersetzen Sie snow).

code
[Unit]
Description=Start x11vnc at startup.
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /home/snow/.vnc/passwd -rfbport 5900 -shared
Restart=on-failure

[Install]
WantedBy=multi-user.target

Zusätzliche empfohlene Flags für Stabilität: -loop, -noxdamage, -repeat.

Aktivieren Sie den neuen Service:

code
# systemd anweisen, die neue Konfiguration zu laden
sudo systemctl daemon-reload

# Service für den automatischen Start aktivieren
sudo systemctl enable x11vnc.service

# Service sofort starten
sudo systemctl start x11vnc.service

# Status überprüfen
sudo systemctl status x11vnc.service

5. Sicherheit: VNC über einen SSH-Tunnel absichern

Die VNC-Verbindung ist unverschlüsselt. Um die Kommunikation abzusichern, sollte sie durch einen SSH-Tunnel geleitet werden.

  1. SSH-Tunnel vom Client-Rechner aufbauen:

    code
    # Leitet den lokalen Port 5901 zum Port 5900 auf dem Armbian-Gerät weiter
    ssh -L 5901:localhost:5900 user@ihr-armbian-gerät
    
  2. Mit dem lokalen Port verbinden: Verwenden Sie nun in Ihrem VNC-Client localhost:5901 als Adresse. Der gesamte Datenverkehr wird sicher über SSH getunnelt.


Fazit

x11vnc ist eine effektive Lösung, um eine bestehende grafische Sitzung auf einem Armbian-Gerät fernzusteuern. Aufgrund der fehlenden Verschlüsselung ist die Verwendung eines SSH-Tunnels für den Zugriff über unsichere Netzwerke unerlässlich.