Es ist für einen Administrator wichtig, sich aus der Ferne mit einem Rechner verbinden zu können. Server, die in ihrem eigenen Raum eingeschlossen sind, sind selten dauerhaft mit Tastaturen und Bildschirmen ausgestattet - aber sie sind mit dem Netzwerk verbunden.
9.2.1. Sicheres Remoteanmelden: SSH
Beim SSH-Protokoll (Secure SHell) wurden Sicherheit und Zuverlässigkeit bereits im Entwurf berücksichtigt. Verbindungen auf der Basis von SSH sind sicher: der Partner ist authentifiziert und jeglicher Datenverkehr erfolgt verschlüsselt.
SSH bietet auch zwei Dateiübertragungsdienste an. scp
ist ein Befehlszeilenprogramm, das wie cp
benutzt werden kann, nur dass jedem Pfad zu einem anderen Rechner der Name dieses Rechners gefolgt von einem Doppelpunkt vorangestellt wird.
$
scp file machine:/tmp/
sftp
ist ein interaktiver Befehl, ähnlich wie ftp
. In einer einzigen Sitzung kann sftp
mehrere Dateien übertragen, und es ist möglich, mit ihm Dateien auf einem entfernten Rechner zu bearbeiten (löschen, umbenennen, Berechtigungen ändern usw.).
Debian verwendet OpenSSH, eine freie Version von SSH, die vom OpenBSD
-Projekt betreut wird (einem freien Betriebssystem, das auf dem BSD-Kernel aufbaut und seinen Schwerpunkt auf Sicherheit setzt) und ist ein Fork der ursprünglich vom finnischen Unternehmen SSH Communications Security Corp. entwickelten SSH-Software. Dieses Unternehmen entwickelte SSH ursprünglich als freie Software, entschied sich jedoch schließlich, seine Entwicklung unter einer proprietären Lizenz fortzusetzen. Das OpenBSD-Projekt schuf daraufhin OpenSSH, um eine freie Version von SSH zu bewahren.
OpenSSH ist in zwei Pakete aufgeteilt: der Client-Teil befindet sich im Paket openssh-client und der Server-Teil im Paket openssh-server. Das Metapaket ssh ist von beiden Teilen abhängig und erleichtert die Installation beider (apt install ssh
).
9.2.1.1. Schlüsselbasierte Authentifizierung
Jedes Mal, wenn sich jemand über SSH anmeldet, fragt der entfernte Server nach einem Passwort zur Authentifizierung des Benutzers. Dies kann problematisch sein, wenn man eine Verbindung automatisieren möchte, oder wenn man ein Hilfsprogramm verwendet, das häufige Verbindungen über SSH benötigt. Daher bietet SSH ein schlüsselbasiertes Authentifizierungssystem.
Der Benutzer erzeugt auf dem Client-Rechner mit dem Befehl ssh-keygen -t rsa
ein neues Schlüsselpaar; der öffentliche Schlüssel wird in der Datei ~/.ssh/id_rsa.pub
gespeichert und der dazugehörige private Schlüssel in ~/.ssh/id_rsa
. Der Benutzer verwendet dann den Befehl ssh-copy-id server
, um seinen öffentlichen Schlüssel auf dem Server zur Datei ~/.ssh/authorized_keys
hinzuzufügen. Falls der private Schlüssel zur Zeit seiner Erzeugung nicht mit einer „Passphrase“ geschützt wurde, funktionieren alle nachfolgenden Anmeldungen auf dem Server ohne Eingabe eines Passworts. Anderenfalls muss der private Schlüssel jedes Mal erneut unter Eingabe der Passphrase entschlüsselt werden. Glücklicherweise ermöglicht es das Programm ssh-agent
, private Schlüssel im Speicher zu halten, so dass das Passwort nicht ständig neu eingegeben werden muss. Hierzu verwendet man einfach (einmal pro Sitzung) den Befehl ssh-add
, wobei Voraussetzung ist, dass die Sitzung bereits einer funktionsfähigen Instanz von ssh-agent
zugeordnet ist. Debian aktiviert dieses Programm standardmäßig beim Start einer grafischen Sitzung, es kann jedoch durch eine Änderung der Datei /etc/X11/Xsession.options
deaktiviert sein. In einer Konsolensitzung kann es manuell mit dem Befehl eval $(ssh-agent)
gestartet werden.
9.2.1.2. Entfernte X11-Anwendungen benutzen
Das SSH-Protokoll ermöglicht die Weiterleitung grafischer Daten („X11“-Sitzung, nach dem Namen des am weitesten verbreiteten grafischen Systems in Unix); der Server stellt hierbei einen besonderen Kanal für diese Daten bereit. Konkret bedeutet dies, dass ein aus der Ferne ausgeführtes, grafisches Programm vom X.org-Server auf dem lokalen Bildschirm dargestellt werden kann, und dass die gesamte Sitzung (Eingabe und Anzeige) abgesichert ist. Da entfernte Anwendungen durch diese Funktion das lokale System beeinträchtigen können, ist sie standardmäßig deaktiviert. Sie kann aktiviert werden, indem man in der Serverkonfigurationsdatei (/etc/ssh/sshd_config
) die Option X11Forwarding yes
einstellt. Schließlich muss der Benutzer diese Funktion anfordern, indem er die Option -X
zur Befehlszeile ssh
hinzufügt.
9.2.1.3. Verschlüsselte Tunnel mit Port-Weiterleitung einrichten
Die Optionen
-R
und
-L
des Befehls
ssh
ermöglichen es, „verschlüsselte Tunnel“ zwischen zwei Rechnern zu erstellen, und so einen lokalen TCP-Port (siehe
ZURÜCK ZU DEN GRUNDLAGEN TCP/UDP in der Seitenleiste) sicher an einen entfernten Rechner weiterzuleiten und umgekehrt.
ssh -L 8000:server:25 intermediary
eröffnet eine SSH-Sitzung mit dem Host
intermediary und nimmt am lokalen Port 8000 Verbindungen an (siehe
Abbildung 9.3, „Einen lokalen Port mit SSH weiterleiten“). Für jede Verbindung, die zu diesem Port hergestellt wird, baut
ssh
eine Verbindung vom Rechner
intermediary zum Port 25 des
server auf und verknüpft beide Verbindungen.
ssh -R 8000:server:25 intermediary
eröffnet auch eine SSH-Sitzung zum Rechner
intermediary, aber
ssh
nimmt dann auf diesem Rechner an Port 8000 Verbindungen an (siehe
Abbildung 9.4, „Einen entfernten Port mit SSH weiterleiten“). Jede Verbindung, die an diesem Port hergestellt wird, veranlasst
ssh
, eine Verbindung vom lokalen Rechner zum Port 25 des
server zu öffnen und beide Verbindungen miteinander zu verknüpfen.
In beiden Fällen werden Verbindungen zu Port 25 auf dem Host server hergestellt, die durch den SSH-Tunnel laufen, der zwischen dem lokalen Rechner und dem Rechner intermediary hergestellt wurde. Im ersten Fall ist der Eingang zum Tunnel der lokale Port 8000, und die Daten laufen zum Rechner intermediary, bevor sie zum server im „öffentlichen“ Netzwerk geleitet werden. Im zweiten Fall sind Ein- und Ausgang im Tunnel vertauscht: der Eingang ist Port 8000 auf dem Rechner intermediary, der Ausgang ist auf dem lokalen Host, und die Daten werden dann zum server geleitet. In der Praxis ist der Server normalerweise entweder der lokale Rechner oder der intermediäre. Auf diese Weise sichert SSH die Verbindung von einem Ende zum anderen.
9.2.2. Entfernte grafische Arbeitsflächen benutzen
VNC (Virtual Network Computing) ermöglicht aus der Ferne Zugriff auf grafische Arbeitsflächen.
Dieses Hilfsprogramm wird vor allem zur technischen Unterstützung eingesetzt; der Administrator kann die Fehler sehen, denen ein Benutzer gegenübersteht, und ihm die richtige Vorgehensweise zeigen, ohne vor Ort sein zu müssen.
First, the user must authorize sharing their session. The GNOME graphical desktop environment in Jessie includes that option in its configuration panel (contrary to previous versions of Debian, where the user had to install and run vino
). KDE Plasma still requires using krfb
to allow sharing an existing session over VNC. For other graphical desktop environments, the x11vnc
command (from the Debian package of the same name) serves the same purpose; you can make it available to the user with an explicit icon.
When the graphical session is made available by VNC, the administrator must connect to it with a VNC client. GNOME has vinagre
and remmina
for that, while the KDE project provides krdc
(in the menu at → → ). There are other VNC clients that use the command line, such as xvnc4viewer
in the Debian package of the same name. Once connected, the administrator can see what is going on, work on the machine remotely, and show the user how to proceed.
VNC funktioniert auch für mobile Anwender oder für Angestellte, die sich gelegentlich von zu Hause aus anmelden müssen, um auf einen entfernten Bildschirm ähnlich dem an ihrem Arbeitsplatz zuzugreifen. Die Konfiguration eines derartigen Dienstes ist komplizierter: zunächst installieren Sie das Paket vnc4server, passen die Konfiguration des Display Managers dahingehend an, dass er Anfragen an XDMCP Query
annimmt (für gdm3
kann dies durch Hinzufügen von Enable=true
im Abschnitt “xdmcp” von /etc/gdm3/daemon.conf
) und starten schließlich den VNC-Server mit inetd
, so dass eine Sitzung automatisch beginnt, wenn ein Benutzer sich anzumelden versucht. Sie können zum Beispiel folgende Zeile zu /etc/inetd.conf
hinzufügen:
5950 stream tcp nowait nobody.tty /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 1024x768 -depth 16 securitytypes=none
Das Umleiten ankommender Verbindungen zum Display Manager löst das Problem der Legitimierung, weil nur Benutzer mit einem lokalen Konto den Anmeldeschirm von gdm3
passieren können (oder in gleicher Weise kdm
, xdm
usw.). Da dieses Verfahren problemlos mehrere gleichzeitige Anmeldungen ermöglicht (vorausgesetzt, dass der Server ausreichend leistungsfähig ist), kann es sogar dazu verwendet werden, vollständige Arbeitsflächen für mobile Benutzer bereitzustellen (oder für weniger leistungsstarke Arbeitsplatzrechner, die als Thin Clients konfiguriert sind). Benutzer melden sich einfach mit vncviewer server:50
beim Bildschirm des Servers an, da der verwendete Port 5950 ist.