14 Remote-Grafiksitzungen mit VNC #
Über VNC (Virtual Network Computing) haben Sie über einen Grafik-Desktop Zugriff auf einen Remote-Rechner und können Remote-Grafikanwendungen ausführen. VNC ist plattformunabhängig und greift auf den Remote-Rechner über ein beliebiges Betriebssystem zu. In diesem Kapitel wird beschrieben, wie mit den Desktop-Clients vncviewer und Remmina eine Verbindung zu einem VNC-Server hergestellt und wie ein VNC-Server betrieben wird.
SUSE Linux Enterprise Server unterstützt zwei verschiedene Arten von VNC-Sitzungen: einmalige Sitzungen, die so lange „aktiv“ sind, wie die VNC-Verbindung zum Client besteht, und permanente Sitzungen, die so lange „aktiv“ sind, bis sie explizit beendet werden.
Ein VNC-Server kann beide Sitzungen gleichzeitig auf verschiedenen Ports bieten, eine geöffnete Sitzung kann jedoch nicht von einem Typ in den anderen konvertiert werden.
14.1 Der vncviewer
-Client #
Um eine Verbindung zu einem VNC-Dienst herzustellen, der von einem Server bereitgestellt wird, ist ein Client erforderlich. Der Standard-Client in SUSE Linux Enterprise Server ist vncviewer
, der im Paket tigervnc
bereitgestellt wird.
14.1.1 Verbinden mithilfe der vncviewer-CLI #
Mit folgendem Kommando können Sie den VNC-Viewer starten und eine Sitzung mit dem Server initiieren:
>
vncviewer jupiter.example.com:1
Anstelle der VNC-Anmeldenummer können Sie auch die Portnummer mit zwei Doppelpunkten angeben:
>
vncviewer jupiter.example.com::5901
Die im VNC-Client angegebene Anzeige- oder Portnummer muss mit der Anzeige- oder Portnummer übereinstimmen, die durch das Kommando vncserver
auf dem Zielcomputer ausgewählt wird. Weitere Informationen finden Sie unter Abschnitt 14.4, „Konfigurieren von permanenten VNC-Serversitzungen“.
14.1.2 Verbinden mithilfe der vncviewer-GUI #
Wenn vncviewer
ausgeführt wird, ohne --listen
oder einen Host für die Verbindung anzugeben, wird ein Fenster zur Eingabe von Verbindungsinformationen angezeigt. Geben Sie den Host in das Feld (VNC-Server) wie in Abschnitt 14.1.1, „Verbinden mithilfe der vncviewer-CLI“ ein und klicken Sie auf (Verbinden).
14.1.3 Benachrichtigungen zu unverschlüsselten Verbindungen #
Das VNC-Protokoll unterstützt verschiedene Arten von verschlüsselten Verbindungen, nicht zu verwechseln mit Passwortauthentifizierung. Wenn eine Verbindung kein TLS verwendet, wird der Text „(Connection not encrypted!)“ (Verbindung nicht verschlüsselt!) im Fenstertitel des VNC-Viewers angezeigt.
14.2 Remmina: Remote-Desktop-Client #
Der moderne Remote-Desktop-Client Remmina bietet einen großen Funktionsumfang. Es werden mehrere Zugriffsmethoden unterstützt, z. B. VNC, SSH, RDP oder Spice.
14.2.1 Installation #
Überprüfen Sie zur Verwendung von Remmina, ob das remmina-Paket auf Ihrem System installiert ist, und installieren Sie es gegebenenfalls. Denken Sie daran, auch das VNC-Plugin für Remmina zu installieren:
#
zypper in remmina remmina-plugin-vnc
14.2.2 Hauptfenster #
Starten Sie Remmina mit dem Kommando remmina
.
Das Hauptanwendungsfenster enthält eine Liste der gespeicherten Remote-Sitzungen. Hier können Sie eine neue Remote-Sitzung hinzufügen und speichern, eine neue Sitzung per Schnellstart beginnen (also ohne zu speichern), eine zuvor gespeicherte Sitzung starten oder die globalen Einstellungen für Remmina festlegen.
14.2.3 Hinzufügen von Remote-Sitzungen #
Um eine neue Remote-Sitzung hinzuzufügen und zu speichern, klicken Sie auf oben links im Hauptfenster. Das Fenster wird geöffnet.
Füllen Sie die Felder für das soeben hinzugefügte Remote-Sitzungsprofil aus. Die wichtigsten sind:
- Name
Name des Profils. Wird im Hauptfenster angezeigt.
- Protokoll
Protokoll für die Verbindung zur Remote-Sitzung, z. B. VNC.
- Server
IP- oder DNS-Adresse und Anzeigenummer des Remote-Servers.
- Benutzername, Benutzerpasswort
Berechtigungsnachweis für die Remote-Authentifizierung. Soll keine Authentifizierung erfolgen, geben Sie hier nichts ein.
- Farbtiefe, Qualität
Wählen Sie die optimalen Optionen für Ihre Verbindungsgeschwindigkeit und -qualität.
Auf der Registerkarte
finden Sie weitere Einstellungen.Wenn die Kommunikation zwischen dem Client und dem Remote-Server nicht verschlüsselt ist, aktivieren Sie die Option
. Ansonsten kommt es zu Verbindungsfehlern.Auf der Registerkarte
finden Sie erweiterte Optionen für SSH-Tunneling und Authentifizierung.Bestätigen Sie die Eingabe mit
. Das neue Profil wird im Hauptfenster angezeigt.14.2.4 Starten von Remote-Sitzungen #
Sie können entweder eine zuvor gespeicherte Sitzung starten oder eine Remote-Sitzung per Schnellstart beginnen (also ohne die Verbindungsdetails zu speichern).
14.2.4.1 Schnellstart von Remote-Sitzungen #
Mit dem Dropdown-Feld und dem Textfeld oben im Hauptfenster können Sie eine Remote-Sitzung per Schnellstart beginnen, ohne die Verbindungsdetails anzugeben und zu speichern.
Wählen Sie das Kommunikationsprotokoll im Dropdown-Feld aus (z. B. „VNC“). Geben Sie dann die DNS- oder IP-Adresse des VNC-Servers ein, gefolgt von einem Doppelpunkt und einer Anzeigenummer, und bestätigen Sie mit Eingabetaste.
14.2.4.2 Öffnen von gespeicherten Remote-Sitzungen #
Zum Öffnen einer bestimmten Remote-Sitzung doppelklicken Sie in der Sitzungsliste auf diese Sitzung.
14.2.4.3 Fenster der Remote-Sitzungen #
Die Remote-Sitzungen werden in Registerkarten eines separaten Fensters geöffnet. Jede Registerkarte enthält eine Sitzung. Über die Symbolleiste links im Fenster können Sie die Fenster/Sitzungen verwalten. Beispielsweise können Sie den Vollbildmodus aktivieren/deaktivieren, die Fenstergröße an die Anzeigegröße der Sitzung anpassen, bestimmte Tastatureingaben an die Sitzung senden, Bildschirmfotos der Sitzung aufnehmen oder die Bildqualität festlegen.
14.2.5 Bearbeiten, Kopieren und Löschen gespeicherter Sitzungen #
Zum Bearbeiten einer gespeicherten Remote-Sitzung klicken Sie mit der rechten Maustaste im Hauptfenster von Remmina auf den Namen der Sitzung und wählen Sie . Eine Beschreibung der relevanten Felder finden Sie unter Abschnitt 14.2.3, „Hinzufügen von Remote-Sitzungen“.
Zum Kopieren einer gespeicherten Remote-Sitzung klicken Sie mit der rechten Maustaste im Hauptfenster von Remmina auf den Namen der Sitzung und wählen Sie . Ändern Sie im Fenster den Name des Profils, passen Sie optional die relevanten Optionen an und bestätigen Sie mit .
Zum Löschen einer gespeicherten Remote-Sitzung klicken Sie mit der rechten Maustaste im Hauptfenster von Remmina auf den Namen der Sitzung und wählen Sie . Bestätigen Sie das nächste Dialogfeld mit .
14.2.6 Ausführen von Remote-Sitzungen über die Kommandozeile #
Mit der folgenden Syntax öffnen Sie eine Remote-Sitzung über die Befehlszeile oder aus einer Stapeldatei heraus, ohne zunächst das Hauptanwendungsfenster zu öffnen:
>
remmina -c profile_name.remmina
Die Profildateien von Remmina werden im Verzeichnis .local/share/remmina/
Ihres Benutzerverzeichnisses gespeichert. Zum Ermitteln der Profildatei für die zu öffnende Sitzung starten Sie Remmina und klicken Sie im Hauptfenster auf den Sitzungsnamen. Der Pfad zur Profildatei wird in der Statuszeile unten im Fenster angezeigt.
Wenn Remmina nicht ausgeführt wird, können Sie den Namen der Profildatei durch einen aussagekräftigeren Dateinamen ersetzen (z. B. sle15.remmina
). Sie können sogar die Profildatei in Ihr Benutzerverzeichnis kopieren und mit dem Kommando remmina -c
direkt aus diesem Verzeichnis heraus ausführen.
14.3 Konfigurieren von einmaligen Sitzungen am VNC-Server #
Eine einmalige Sitzung wird vom Remote-Client initiiert. Sie startet einen grafischen Anmeldebildschirm auf dem Server. Auf diese Weise können Sie den Benutzer auswählen, der die Sitzung starten soll sowie, sofern vom Anmeldungsmanager unterstützt, die Desktop-Umgebung. Wenn Sie die Client-Verbindung, beispielsweise eine VNC-Sitzung, beenden, werden auch alle während der Sitzung gestarteten Anwendungen beendet. Einmalige VNC-Sitzungen können nicht freigegeben werden, Sie können jedoch mehrere Sitzungen gleichzeitig auf demselben Host ausführen.
Starten Sie
› › .Aktivieren Sie die Option
(Verwaltung von entfernten Rechnern aus (remote) ohne Sitzungsverwaltung zulassen).Aktivieren Sie die Option
(Zugriff über Webbrowser aktivieren), wenn der Zugriff auf die VNC-Sitzung über einen Webbrowser-Fenster erfolgen soll.Aktivieren Sie bei Bedarf
(wenn Ihre Netzwerkschnittstelle z. B. so konfiguriert ist, dass sie in der externen Zone liegt). Wenn Sie mehrere Netzwerkschnittstellen haben, beschränken Sie das Öffnen der Firewall-Ports über auf eine bestimmte Schnittstelle.Bestätigen Sie die Einstellungen mit
.Falls zu dem Zeitpunkt noch nicht alle erforderlichen Pakete verfügbar sind, müssen Sie der Installation der fehlenden Pakete zustimmen.
Tipp: Neustart des AnzeigemanagersYaST nimmt Änderungen an den Einstellungen des Anzeigemanagers vor. Diese Änderungen treten erst dann in Kraft, wenn Sie sich aus der aktuellen grafischen Sitzung abmelden und den Anzeigemanager neu starten.
14.3.1 Verfügbare Konfigurationen #
Die Standardkonfiguration von SUSE Linux Enterprise Server stellt Sitzungen mit einer Auflösung von 1024 x 768 Pixeln und einer Farbtiefe von 16 Bit bereit. Die Sitzungen sind an Port 5901
für „reguläre“ VNC-Viewer (entspricht VNC-Display 1
) und an Port 5801
für Webbrowser verfügbar.
Weitere Konfigurationen können an anderen Ports verfügbar gemacht werden, siehe Abschnitt 14.3.3, „Konfigurieren einmaliger VNC-Sitzungen“
VNC-Anzeigenummern und X-Anzeigenummern sind bei einmaligen Sitzungen unabhängig. Eine VNC-Anzeigenummer wird manuell jeder Konfiguration zugewiesen, die vom Server unterstützt wird (:1 im obigen Beispiel). Immer, wenn eine VNC-Sitzung mit einer der Konfigurationen initiiert wird, erhält sie automatisch eine freie X-Display-Nummer.
Standardmäßig versuchen sowohl der VNC-Client als auch der Server, über ein selbstsigniertes SSL-Zertifikat sicher zu kommunizieren, das nach der Installation erzeugt wird. Verwenden Sie wahlweise das Standardzertifikat oder ersetzen Sie es durch Ihr eigenes Zertifikat. Wenn Sie das selbstsignierte Zertifikat verwenden, müssen Sie vor dem ersten Herstellen einer Verbindung die Signatur bestätigen – sowohl im VNC-Viewer als auch im Webbrowser.
Einige VNC-Clients weigern sich, eine sichere Verbindung über das standardmäßige selbst signierte Zertifikat herzustellen. Der Vinagre-Client überprüft die Zertifizierung beispielsweise anhand des globalen GnuTLS Trust Store und schlägt bei einem selbst signierten Zertifikat fehl. Verwenden Sie in einem solchen Fall entweder eine andere Verschlüsselungsmethode als x509
oder erstellen Sie ein ordnungsgemäß signiertes Zertifikat für den VNC-Server und importieren Sie es in den Trust Store des Client-Systems.
14.3.2 Initiieren einer einmaligen VNC-Sitzung #
Um eine Verbindung zu einer einmaligen VNC-Sitzung herzustellen, muss ein VNC-Viewer installiert sein, lesen Sie hierzu auch Abschnitt 14.1, „Der vncviewer
-Client“. Alternativ können Sie einen JavaScript-fähigen Webbrowser verwenden, um die VNC-Sitzung anzuzeigen. Geben Sie hierzu folgende URL ein: http://jupiter.example.com:5801
.
14.3.3 Konfigurieren einmaliger VNC-Sitzungen #
Sie können diesen Abschnitt überspringen, wenn Sie die Standardkonfiguration nicht ändern müssen bzw. möchten.
Einmalige VNC-Sitzungen werden über den systemd
-Socket xvnc.socket
gestartet. Standardmäßig bietet sie sechs Konfigurationsblöcke: drei für VNC-Viewer (vnc1
bis vnc3
) und drei für einen JavaScript-Client (vnchttpd1
bis vnchttpd3
). Standardmäßig sind nur vnc1
und vnchttpd1
aktiv.
Mit dem folgenden Kommando aktivieren Sie den VNC-Server-Socket beim Booten:
>
sudo
systemctl enable xvnc.socket
Mit dem folgenden Kommando starten Sie den Socket sofort:
>
sudo
systemctl start xvnc.socket
Der Xvnc
-Server kann mit der Option server_args
konfiguriert werden. Eine Liste der Optionen finden Sie unter Xvnc --help
.
Achten Sie beim Hinzufügen benutzerdefinierter Konfigurationen darauf, keine Ports zu verwenden, die bereits von anderen Konfigurationen, anderen Services oder bestehenden permanenten VNC-Sitzungen auf demselben Host verwendet werden.
Aktivieren Sie Konfigurationsänderungen mit folgendem Kommando:
>
sudo
systemctl reload xvnc.socket
Wenn Sie die entfernte Verwaltung wie in Prozedur 14.1, „Aktivieren von einmaligen VNC-Sitzungen“ beschrieben aktivieren, werden die Ports 5801
und 5901
in der Firewall geöffnet. Wenn die Netzwerkschnittstelle, über die die VNC-Sitzung bereitgestellt wird, durch eine Firewall geschützt wird, müssen Sie die entsprechenden Ports manuell öffnen, wenn Sie zusätzliche Ports für VNC-Sitzungen aktivieren. Eine Anleitung dazu finden Sie unter Chapter 23, Masquerading and firewalls.
14.4 Konfigurieren von permanenten VNC-Serversitzungen #
Auf eine permanente Sitzung kann gleichzeitig von mehreren Clients zugegriffen werden. Dies eignet sich ideal für Demozwecke, bei denen ein Client den vollen Zugriff und alle anderen einen reinen Anzeigezugriff haben. Weiter eignet sich dies für Schulungssitzungen, bei denen der Schulungsleiter Zugriff auf den Desktop des Teilnehmers benötigt.
Um eine Verbindung zu einer permanenten VNC-Sitzung herzustellen, muss ein VNC-Viewer installiert sein. Weitere Informationen finden Sie im Abschnitt 14.1, „Der vncviewer
-Client“. Alternativ können Sie einen JavaScript-fähigen Webbrowser verwenden, um die VNC-Sitzung anzuzeigen. Geben Sie hierzu folgende URL ein: http://jupiter.example.com:5801
.
14.4.1 Mit vncmanager
initiierte VNC-Sitzung #
Starten Sie
› › .Aktivieren Sie die Option
(Verwaltung von entfernten Rechnern aus (remote) mit Sitzungsverwaltung zulassen).Aktivieren Sie die Option
(Zugriff über Webbrowser aktivieren), wenn der Zugriff auf die VNC-Sitzung über ein Webbrowser-Fenster erfolgen soll.Aktivieren Sie bei Bedarf
(wenn Ihre Netzwerkschnittstelle z. B. so konfiguriert ist, dass sie in der externen Zone liegt). Wenn Sie mehrere Netzwerkschnittstellen haben, beschränken Sie das Öffnen der Firewall-Ports über auf eine bestimmte Schnittstelle.Bestätigen Sie die Einstellungen mit
.Falls zu dem Zeitpunkt noch nicht alle erforderlichen Pakete verfügbar sind, müssen Sie der Installation der fehlenden Pakete zustimmen.
Tipp: Neustart des AnzeigemanagersYaST nimmt Änderungen an den Einstellungen des Anzeigemanagers vor. Diese Änderungen treten erst dann in Kraft, wenn Sie sich aus der aktuellen grafischen Sitzung abmelden und den Anzeigemanager neu starten.
14.4.1.1 Konfigurieren von permanenten VNC-Sitzungen #
Sobald Sie die VNC-Sitzungsverwaltung gemäß Prozedur 14.2, „Aktivieren von permanenten VNC-Sitzungen“ aktiviert haben, können Sie wie gewohnt eine Verbindung zur Remote-Sitzung über den herstellen, z. B. vncviewer
vncviewer oder Remmina. Nach erfolgter Anmeldung wird das VNC-Symbol in der Taskleiste der Desktop-Umgebung angezeigt. Zum Öffnen des Fensters klicken Sie auf das Symbol. Falls Ihre Desktop-Umgebung keine Symbole in der Task-Leiste unterstützt, führen Sie vncmanager-controller
manuell aus.
Verschiedene Einstellungen beeinflussen das Verhalten der VNC-Sitzung:
Dies entspricht einer einmaligen Sitzung. Diese ist für andere nicht sichtbar und wird beendet, sobald Sie die Verbindung zur Sitzung trennen. Weitere Informationen finden Sie unter Abschnitt 14.3, „Konfigurieren von einmaligen Sitzungen am VNC-Server“.
Die Sitzung ist für andere Benutzer sichtbar und wird weiter ausgeführt, auch wenn Sie die Verbindung zur Sitzung trennen.
Geben Sie den Namen der permanenten Sitzung an, sodass sie beim Wiederherstellen der Verbindung eindeutig erkennbar ist.
Die Sitzung ist frei zugänglich, ohne dass die Benutzer sich mit ihrem Berechtigungsnachweis anmelden müssen.
Zum Zugriff auf die Sitzung müssen Sie sich mit einem gültigen Benutzernamen und Passwort anmelden. Die gültigen Benutzernamen werden im Textfeld
angezeigt.Mehrere Benutzer können nicht gleichzeitig der permanenten Sitzung beitreten.
Mehrere Benutzer können gleichzeitig der permanenten Sitzung beitreten. Nützlich für Remote-Präsentationen oder Schulungssitzungen.
Bestätigen Sie Ihre Auswahl mit
.14.4.1.2 Beitreten zu permanenten VNC-Sitzungen #
Sobald Sie eine permanente VPC-Sitzung gemäß Abschnitt 14.4.1.1, „Konfigurieren von permanenten VNC-Sitzungen“ eingerichtet haben, können Sie dieser Sitzung über den VNC-Viewer beitreten. Nachdem der VNC-Client eine Verbindung zum Server aufgebaut hat, werden Sie gefragt, ob Sie eine neue Sitzung erstellen oder der bestehenden Sitzung beitreten möchten:
Wenn Sie auf den Namen der bestehenden Sitzung klicken, werden Sie ggf. aufgefordert, Ihren Berechtigungsnachweis anzugeben, abhängig von den Einstellungen für die dauerhafte Sitzung.
14.5 Konfigurieren der Verschlüsselung am VNC-Server #
Wenn der VNC-Server ordnungsgemäß eingerichtet ist, wird die gesamte Kommunikation zwischen dem VNC-Server und dem Client verschlüsselt. Die Authentifizierung wird zu Beginn der Sitzung vorgenommen. Die eigentliche Datenübertragung beginnt erst danach.
Die Sicherheitsoptionen für einmalige und permanente VNC-Sitzungen werden mit dem Parameter -securitytypes
des Kommandos /usr/bin/Xvnc
in der Zeile server_args
konfiguriert. Der Parameter -securitytypes
bestimmt sowohl die Authentifizierungsmethode als auch die Verschlüsselung. Hier stehen die folgenden Optionen zur Auswahl:
- None, TLSNone, x509None
Keine Authentifizierung.
- VncAuth, TLSVnc, x509Vnc
Authentifizierung mit benutzerdefiniertem Passwort.
- Plain, TLSPlain, x509Plain
Authentifizierung mit Überprüfung des Benutzerpassworts mit PAM.
- None, vncAuth, Plain
Keine Verschlüsselung.
- TLSNone, TLSVnc, TLSPlain
Anonyme TLS-Verschlüsselung. Alle Angaben werden verschlüsselt; auf dem Remote-Host erfolgt jedoch keine Überprüfung. Damit sind Sie gegen passive Angreifer geschützt, nicht jedoch gegen Man-in-the-Middle-Angreifer.
- x509None, x509Vnc, x509Plain
TLS-Verschlüsselung mit Zertifikat. Wenn Sie ein selbstsigniertes Zertifikat heranziehen, werden Sie bei der ersten Verbindung aufgefordert, dieses Zertifikat zu bestätigen. Bei weiteren Verbindungen erhalten Sie nur dann eine Warnung, wenn das Zertifikat geändert wurde. So sind Sie gegen alle Angreifer geschützt, ausgenommen Man-in-the-Middle-Angreifer bei der ersten Verbindung (ähnlich wie bei der typischen SSH-Verwendung). Wenn Sie ein Zertifikat heranziehen, das von einer Zertifizierungsstelle signiert wurde und das mit dem Computernamen übereinstimmt, erzielen Sie praktisch uneingeschränkte Sicherheit (ähnlich wie bei der typischen HTTPS-Verwendung).
TippEinige VNC-Clients weigern sich, eine sichere Verbindung über das standardmäßige selbstsignierte Zertifikat herzustellen. Der Vinagre-Client überprüft die Zertifizierung beispielsweise anhand des globalen GnuTLS Trust Store und schlägt bei einem selbstsignierten Zertifikat fehl. Verwenden Sie in einem solchen Fall entweder eine andere Verschlüsselungsmethode als
x509
oder erstellen Sie ein ordnungsgemäß signiertes Zertifikat für den VNC-Server und importieren Sie es in den Trust Store des Client-Systems.Tipp: Pfad zum Zertifikat und zum SchlüsselBei der X509-gestützten Verschlüsselung müssen Sie den Pfad zum X509-Zertifikat und -Schlüssel mit den Optionen
-X509Cert
und-X509Key
angeben.
Wenn Sie mehrere Sicherheitstypen angeben (jeweils durch Komma getrennt), wird der erste Typ herangezogen, der sowohl vom Client als auch vom Server unterstützt wird. So können Sie die opportunistische Verschlüsselung auf dem Server konfigurieren. Dies ist von Nutzen, wenn VNC-Clients unterstützt werden sollen, die ihrerseits keine Verschlüsselung unterstützen.
Auf dem Client können Sie außerdem die zulässigen Sicherheitstypen angeben, sodass ein Downgrade-Angriff vermieden wird, wenn Sie eine Verbindung zu einem Server herstellen, auf dem bekanntermaßen die Verschlüsselung aktiviert ist. (Der VNC-Viewer zeigt in diesem Fall allerdings die Meldung „Verbindung nicht verschlüsselt!“ ).
14.6 Kompatibilität mit Wayland #
Die Funktion zur Verwaltung von entfernten Rechnern aus (VNC) basiert auf X11 und kann zu einem leeren Bildschirm führen, wenn Wayland aktiviert ist. Der Display-Manager muss so konfiguriert werden, dass er X11 anstelle von Wayland verwendet. Für gdm bearbeiten Sie /etc/gdm/custom.conf
. Fügen Sie der Konfigurationsdatei im Abschnitt [daemon]
den Eintrag WaylandEnable=false
hinzu. Bei der Anmeldung muss der Benutzer auch eine X11-kompatible Sitzung wählen. Wenn Sie die Wayland-Option für GNOME entfernen möchten, können Sie das Paket gnome-session-wayland entfernen und sperren.