Die Abfolge der Vorgänge einer SSH-Verbindung

Bestimmte Vorgänge tragen zu einer unversehrten SSH-Kommunikation zwischen zwei Rechnern bei.

Zunächst wird eine sichere Transportschicht geschaffen, die dem Client-System anzeigt, dass es mit dem korrekten Server in Verbindung steht. Anschließend werden die Mitteilungen zwischen den beiden Rechnern mit einer symmetrischen Ziffer verschlüsselt.

Nachdem eine auf diese Weise verschlüsselte Verbindung mit dem Server hergestellt wurde, kann sich der Client gegenüber dem Server identifizieren, ohne dass die Gefahr einer Manipulation der entsprechenden Informationen besteht. Für die standardmäßige Authentifizierung verwendet OpenSSH von Red Hat Linux DSA- oder RSA-Schlüssel sowie die Version 2.0 des SSH-Protokolls.

Sobald sich der Client gegenüber dem Server identifiziert hat, können verschiedene Dienste auf sichere Weise über diese Verbindung verwendet werden. Darunter: interaktive Shell-Sessionen, X11-Anwendungen und Kommunikationen von TCP/IP-Ports über Tunnel.

Vom lokalen System erfordert dieser gesamte Verbindungsprozess einen nur geringen Arbeitsaufwand mehr. SSH funktioniert sehr gut, da es den Benutzern geläufig ist, die bereits mit weniger sicheren Verbindungsmethoden vertraut sind.

Im folgenden Beispiel initialisiert der Benutzer user1 auf dem Client-System eine Verbindung zu einem Server. Die IP-Adresse des Servers lautet 10.0.0.2, könnte aber auch der Domänenname sein. Der Name, mit dem sich user1 am Server anmeldet, ist user2. Der Befehl ssh sieht daher wie folgt aus:

[user1@machine1 user1]$ ssh user2@10.0.0.2

Der OpenSSH-Client wird nun den Benutzer auffordern, den persönlichen Schlüssel einzugeben, der der Authentifizierung dient. Dieser Schlüssel wird jedoch nicht über die - inzwischen sichere - Verbindung zwischen Client und Server gesendet, sondern benutzt, um die Datei id_dsa zu öffnen und eine Unterschrift zu erstellen, die anschließend an den Server übertragen wird. Wenn der Server eine Kopie des allgemeinen Benutzerschlüssels besitzt, die für die Kontrolle der Unterschrift verwendet werden kann, dann wird der Benutzer authentifiziert.

In diesem Beispiel verwendet der Benutzer einen DSA-Schlüssel (es können aber auch RSA-Schlüssel etc. benutzt werden). Es erscheint die folgende Prompt:

Enter passphrase for DSA key '/home/user1/.ssh/id_dsa':

Sollte die allgemeine Authentifizierung fehlschlagen (weil der falsche Text für den Schlüssel eingegeben wurde oder die Informationen für die Authentifizierung auf dem Server nicht vorhanden sind), wird gewöhnlich ein weiterer Versuch zur Authentifizierung eingeleitet. In unserem Beispiel erlaubt es OpenSSH dem Benutzer user1, sich mit dem Passwort von user2 zu authentifizieren, da die gesendete Unterschrift nicht mit einem allgemeinen, von user2 gespeicherten Schlüssel übereinstimmt:

user2@machine2's password:

Wenn das korrekte Passwort eingegeben wurde, erscheint ein Shell-Prompt. Benutzer user2 muss natürlich bereits einen Account auf dem Rechner 10.0.0.2 besitzen, damit die Authentifizierung des Passworts erfolgen kann.

Last login: Mon Apr 15 13:27:43 2001 from machine1
[user2@machine2 user2]$ 

Der Benutzer kann nun die Shell analog zu telnet oder rsh verwenden. Der einzige Unterschied besteht darin, dass die Kommunikation verschlüsselt ist.

Andere SSH-Tools (scp and sftp) funktionieren auf ähnliche Weise wie die unsicheren rcp und ftp. Anweisungen und Beispiele für den Gebrauch dieser und anderer SSH-Befehle finden Sie im Offiziellen Red Hat Linux Handbuch Benutzerdefinierte Konfiguration.