9.4 Fernsitzungen
Heim-, Tele- und Satellitenarbeitsplätze, Wartungs- und Kundendienstzugriffe sowie zentrale Serverkonzepte erfordern die Möglichkeit, interaktiv Programme auf dem entfernten Rechner auszuführen. Sie dürfen dabei nicht durch mangelnde Geschwindigkeit oder auch Sicherheitsprobleme beeinträchtigt werden.
9.4.1 Telnet
Nur den telnet-Client kann ich noch als Testwerkzeug empfehlen (wie in Abschnitt 7.4.2, »Konfigurationshinweise«, gezeigt). Setzen Sie keinen telnet-Server auf! Jeder Tastenanschlag und jeder Buchstabe der Bildausgabe kann mitgelesen werden. Telnet arbeitet unverschlüsselt und stellt damit ein Sicherheitsrisiko dar.
9.4.2 Secure Shell (SSH), nur Textdarstellung
Wenn Ihnen ein Terminal zur Ausführung von Shell-Kommandos oder DOS-Befehlen ausreicht, arbeiten Sie mit SSH. Ihre Eingaben und die Bildausgabe sind verschlüsselt. Sie können sich mit einem Anmeldekennwort oder durch Schlüssel (siehe Abschnitt 9.2, »SSH, SFTP und SCP: Schlüssel erzeugen zur Erhöhung der Sicherheit oder zur kennwortfreien Anmeldung«) authentifizieren. Terminalsitzungen mit SSH kommen auch mit langsamen Leitungen (Modem, ISDN, GPRS) zurecht.
Der Verbindungsaufbau (siehe auch Abbildung 9.16) erfolgt mit
ssh <BENUTZER>@<RECHNERNAME>
oder mit
ssh <BENUTZER>@<IP-ADRESSE>
Vom Standard abweichende Port-Nummern übergeben Sie mit einer Option:
ssh -p<PORT> <BENUTZER>@<RECHNERNAME>
oder so:
ssh -p<PORT> <BENUTZER>@<IP-ADRESSE>
Eine ssh-Sitzung beenden Sie durch Eingabe von exit.
Abbildung 9.16 Fernsitzung mit SSH
9.4.3 Display-Umleitung für X11-Sitzungen
Sie können einzelne Anwendungen oder einen ganzen Desktop unter Linux oder FreeBSD auf einen anderen PC umleiten. Die Übertragung geschieht in beide Richtungen unverschlüsselt, was ein hohes Sicherheitsrisiko darstellt. Ich rate deshalb von der Verwendung ab. Die Funktionsweise allerdings sollten Sie trotzdem kennen. Sie ist für viele andere Konzepte in diesem Bereich eine wichtige Grundlage:
-
Der X-Server läuft auf dem PC, vor dem Sie sitzen, Ihre Eingaben mit Tastatur und Maus vornehmen und die Bildausgabe verfolgen (Abbildung 9.17).
-
Der X-Client ist der Rechner, auf dem Sie Ihre Programme ausführen. Auch wenn es sich dabei um einen gut ausgestatteten Server-Rechner handelt, spielt er in diesem Fall die Rolle des Clients.
Abbildung 9.17 X11-Client-Server-Modell
9.4.4 SSH zur Display-Umleitung für X11
Die Display-Umleitung der SSH können Sie für grafische Fernsitzungen auf Linux- und FreeBSD-Rechnern nutzen. Dabei müssen Sie nur einen erweiterten Aufruf tätigen. Auf Ihrem PC muss ein X-Server laufen. Für Microsoft Windows können Sie dieses Verfahren nicht einsetzen. Die Aufrufsyntax lautet:
ssh -X <BENUTZER>@<RECHNERNAME>
Vom Standard abweichende Port-Nummern übergeben Sie mit einer Option:
ssh -X -p<PORT> <BENUTZER>@<RECHNERNAME>
Anschließend starten Sie manuell das GUI-Programm (Abbildung 9.18). Schließen Sie die Eingabe mit dem Zeichen »&« ab. Damit bleibt das Terminal frei für weitere Eingaben. Eine korrekte Abmeldung ist erst möglich, wenn Sie alle GUI-Anwendungen beendet haben.
Abbildung 9.18 SSH-Sitzung mit Display-Umleitung
Alternativ können Sie, wenn Sie nur ein Programm ausführen möchten, dieses gleich mit der Anmeldung starten. Dies geschieht wie folgt:
ssh -X <BENUTZER>@<RECHNERNAME> <PROGRAMMNAME>
Beim Beenden des Programms werden Sie zugleich abgemeldet. Diese Handlungsweise eignet sich auch, wenn Sie unter verschiedenen Benutzerkennungen gleichzeitig auf einem Linux- oder FreeBSD-Rechner arbeiten möchten.
9.4.5 Virtual Network Computing (VNC)
VNC ist ein sehr verbreitetes Werkzeug. Es hat einen großen Leistungsumfang, aber auch Risiken beim Einsatz.
VNC in Kürze
-
Viele Implementierungen: für Linux, FreeBSD, macOS und Microsoft Windows, z. B. RealVNC oder tightvnc
-
Ports: 5800/TCP, 5900/TCP (Windows), 58XX/TCP, 59XX/TCP Linux/FreeBSD; XX steht für die Display-Nummer.
-
Verschlüsselung: Das VNC-Protokoll sieht keine Verschlüsselung vor. Leiten Sie die Verbindung deshalb durch einen SSH-Tunnel. Manche Implementierungen verfügen allerdings über eine Verschlüsselungsfunktion.
-
Microsoft Windows: Fernsteuerung eines Desktops
-
Linux/FreeBSD: Durchführung einer Fernsitzung, gleichzeitig für mehrere Benutzer
-
Programme: Server und Clients (Viewer)
Der Programmstart unter Windows erfolgt per Mausklick. Damit können Sie Ihren Desktop fernsteuern lassen, z. B. durch einen Administrator. Zum Aufbau eines sicheren SSH-Tunnels muss auf dem PC ein SSH-Server installiert werden. Auf dem fernsteuernden Rechner benötigen Sie PuTTy. Bauen Sie damit einen SSH-Tunnel auf, und leiten Sie die beiden VNC-Ports durch diesen.
Installieren Sie unter Linux oder FreeBSD das Paket ssvnc. Dieser VNC-Viewer baut selbstständig einen SSH-Tunnel auf. Unter Linux oder FreeBSD müssen Sie zunächst einige Konfigurationsdateien bearbeiten:
-
Melden Sie sich per SSH am entfernten Rechner an.
-
Führen Sie vncserver aus, und vergeben Sie ein Kennwort für die Fernsitzung (Abbildung 9.19). Bei diesem ersten Start wird das Konfigurationsverzeichnis angelegt. Beim Serverstart wird auch jedes Mal eine Desktop-Nummer ausgegeben. Diese benötigen Sie immer zur Verbindungsaufnahme und zum Beenden des VNC-Servers.
-
Wenn Sie einen Windowmanager als Oberfläche möchten, wechseln Sie in das Verzeichnis .vnc, und öffnen Sie mit einem Editor die Datei xstartup. Hier setzen Sie das Kommentarzeichen vor den Eintrag
#x-window-manager &
und fügen eine neue Zeile mit dem gewünschten Windowmanager, hier icewm, ein:
icewm &
-
Beenden Sie jetzt den noch laufenden VNC-Server durch die Eingabe von
vncserver -kill :<Desktop-Nummer>
Diese Nummer sehen Sie beim Start des Servers.
Die Konfiguration ist damit abgeschlossen.
Starten Sie jetzt eine VNC-Sitzung, um die Einstellungen zu testen:
-
Melden Sie sich mittels ssh am entfernten Rechner an.
-
Starten Sie den vncserver. Beachten Sie die Desktop-Nummer, die er ausgibt. Sie benötigen diese für den Verbindungsaufbau und das Beenden des Servers.
-
Starten Sie auf dem Client-Rechner das Viewer-Programm (Abbildung 9.20).
Abbildung 9.20 »ssvnc«
-
Nach dem Verbinden sehen Sie einen Desktop (Abbildung 9.21). Sollten Sie keine Taskleiste o. Ä. sehen, scrollen Sie im VNC-Fenster nach unten.
-
Sie können die VNC-Sitzung jederzeit durch Beenden des Client-Programms unterbrechen. Zu einem späteren Zeitpunkt können Sie sich mit der gleichen Display-Nummer wieder anmelden. In der VNC-Sitzung gestartete Programme arbeiten auch weiter, wenn Sie abgemeldet sind.
-
Möchten Sie die VNC-Sitzung (Abbildung 9.22) beenden, geben Sie am ssh-Terminal das Kommando
vncserver -kill :<Desktop-Nummer>
ein.
Abbildung 9.22 Beenden von »vncserver«
9.4.6 X2Go (Server und Client)
Eine recht einfach zu handhabende Lösung für das Arbeiten mit grafischen Benutzeroberflächen auf räumlich entfernt liegenden Linux-Rechnern erhalten Sie bei Verwendung des X2Go-Servers und -Clients. Das Terminalserver-Projekt finden Sie im Internet unter www.x2go.org. Das Serverpaket läuft ausschließlich auf Linux-Rechnern (und bei Installation aus den Quelltexten auch unter FreeBSD). Die Client-Pakete gibt es für Linux, FreeBSD, Microsoft Windows und macOS.
Sie können bereits mit ISDN-Geschwindigkeit halbwegs vernünftig arbeiten. Mit einer guten DSL-Anbindung zwischen Heimarbeitsplatz und Server läuft es dagegen schon flüssig: Die Reaktions- und Latenzzeiten bemerken Sie nur noch am Rande. Auch UMTS-, Kabel- und LTE-Verbindungen reichen natürlich aus.
Im lokalen Netzwerk ohne »Drossel« steht Ihnen die volle Übertragungsgeschwindigkeit zur Verfügung. Bremsend wirken sich natürlich zu viele gleichzeitig arbeitende Benutzer aus. Deren Zahl hängt von der Art der Anwendungen (Büro: viele Benutzer, CAD & Co: weniger Benutzer) und der Leistungsfähigkeit der Hardware ab. Mit vier Kernen und 16 GB, besser 32 GB Arbeitsspeicher können schon mal 20 Benutzer arbeiten, ohne dass Sie Einschränkungen wahrnehmen. Hier spüren Sie dann die Ressourcenteilung auch im Budget: Viele Benutzer teilen sich ein besser ausgebautes System, am Arbeitsplatz steht möglicherweise ein Raspberry Pi mit seinem kleinen Steckernetzteil anstelle eines vollwertigen PCs. Sie sparen Anschaffungs- und Betriebskosten und auch Arbeitszeit bei der Administration ein.
Die Programme des X2Go-Projekts fassen die Funktionalitäten der SSH-Display-Umleitung, Kompression und XDMCP mehr oder weniger zusammen. Deshalb wird z. B. openssh als Installationsvoraussetzung genannt.
Die Installation der Serverpakete nehmen Sie mit dem Paketmanagement Ihrer Linux-Distribution vor.
Sie können das Client-Programm unter Linux, FreeBSD, macOS und Microsoft Windows betreiben. Wollen Sie einen »richtigen« Client aufbauen, der kostengünstig in Anschaffung und Betrieb ist, können Sie einen Raspberry Pi verwenden. Neben dem Kleinrechner mit Steckernetzteil, Gehäuse, SD-Karte, Maus und Tastatur müssen Sie in Ihrer Kalkulation noch einen eventuell notwendigen HDMI-VGA-Adapter für den Bildschirmanschluss vorsehen. Befestigen Sie den Kleinrechner am besten am Monitor. Der Kabelsalat hält sich in Grenzen, und der so geschaffene Arbeitsplatz zieht in einem Rutsch um. In Abbildung 9.23 sehen Sie eine solche Gerätekombination.
Zusätzliche Sicherheit für X2Go-Heim- und Filialarbeitsplätze erhalten Sie, wenn Sie z. B. ein VPN einrichten.
Die Sitzungseinstellungen am »Thin-Client«-Rechner benötigen nur wenig Einstellungen. Abbildung 9.24 zeigt Ihnen die Verbindungs- und Anmeldeinformationen. Bei Host können Sie auch einen Namen verwenden, wenn in Ihrem Netz eine Namensauflösung für interne Geräte gebräuchlich ist oder am Clientrechner die Datei /etc/hosts gepflegt wird.
Abbildung 9.23 Monitor mit Raspberry Pi als Thin Client
Mit Sitzungsart stellen Sie die Arbeitsumgebung ein, die am Server gestartet werden soll.
Abbildung 9.24 Sitzungseinstellungen im »x2goclient« (Server, Benutzername, Sitzungsart und -name)
Vergessen Sie nicht, die Verbindungsgeschwindigkeit einzustellen. MODEM und ISDN sind schon lange Vergangenheit. Aber ADSL, WAN (für schnelles DSL, Kabel oder LWL-Hausanschluss) oder LAN sollten zutreffend gewählt werden (Abbildung 9.25).
Abbildung 9.25 Einstellung der Übertragungsgeschwindigkeit beim »x2goclient«
Möchten Sie als Serververwalter wissen, welche Benutzer per X2Go angemeldet sind, rufen Sie x2golistsessions_root auf. Ohne Einschränkung der Ausgabe durch weitere Shell-Mittel erhalten Sie eine Vielzahl von Informationen: die Prozess-ID des X2Go-Agenten, die Session-ID (diese benötigen Sie für weitere Kommandos), den X2Go-Port, den X2Go-Server, den Status, den Anmeldezeitpunkt, ein Session-Cookie, die IP-Adresse von X2Goclient, den RX-Port, den Sende-Port, die letzte Aktivität, die Benutzer, die verbrauchte Zeit in Sekunden sowie die Port-Nummer für SSHFS. Aus dieser Vielzahl filtern Sie eine übersichtliche Anzahl wichtiger Angaben heraus. Damit Sie dies nicht immer von Hand eingeben müssen, verwenden Sie dieses Shell-Skript:
#! /bin/sh
# werda.sh
# angemeldete X2Go-Benutzer anzeigen
while true;
do
clear
echo -n "Aktive x2go-Benutzer "; date
echo "--------------------------------------------------------"
x2golistsessions_root | cut -d \| -f2,8,12
echo "--------------------------------------------------------"
echo "Abbruch mit [STRG]+[C]"
sleep 15
done
Dies zeigt jede Viertelminute die Session-ID, die IP-Adresse des Arbeitsplatzes und den Benutzernamen an. Zum Beenden von Sitzungen rufen Sie x2goterminate-session zusammen mit dieser Session-ID auf. Auch hier vereinfacht Ihnen ein kleines Shell-Skript die Arbeit. Sie geben darin den leichter zu handhabenden Benutzernamen ein.
#! /bin/sh
# x2gokilluser.sh
# Beenden von X2Go-Sitzungen
#
echo -n "Benutzername eingeben: ";read bn
if [ -z $bn ];
then
exit
fi
echo "Gefundene Sitzung:"
sitzungen=$(x2golistsessions_root | cut -d \| -f2,12 | grep $bn)
echo $sitzungen
sitzung=$(echo $sitzungen | cut -d \| -f1)
echo -n "Sitzung beenden? (j) ";read w
if [ "$w" = "j" ];
then
x2goterminate-session $sitzung
fi
Abbildung 9.26 zeigt Ihnen den Ablauf.
Abbildung 9.26 Sitzungsverwaltung mittels Shell-Skripten
Vergessen Sie nicht, regelmäßig Updates auf Ihre Thin Clients einzuspielen (apt update und apt upgrade)!