Was ist eigentlich SSH? Die Secure Shell einfach erklärt

Sicherheit spielt im Internet stets eine große Rolle: Deshalb ist das Sicherheitsverfahren SSH fest im TCP/IP-Protokollstapel verankert. Mit dem SSH-Protokoll ist es Nutzern möglich, eine gesicherte Verbindung zwischen zwei Computern aufzubauen. Bereits seit 1995 wird das Netzwerkprotokoll eingesetzt und seitdem wurde es mehrfach überarbeitet. Wir erklären wir Ihnen die wichtigsten Begrifflichkeiten zum Protokoll SSH und erläutern, wie die Verschlüsselung funktioniert.

Fakt

Als Shell bezeichnet man den Teil des Betriebssystems, über welchen Nutzer auf den Computer zugreifen können. Normalerweise versteht man darunter die textbasierte Kommandozeile (beziehungsweise Eingabeaufforderung, Terminal oder Konsole) – aber auch die grafische Benutzeroberfläche fällt unter den Begriff Shell. Man nennt also das Verfahren zum Verbindungsaufbau Secure Shell, weil das Protokoll eine sichere Verbindung zur Shell eines anderen Computers herstellt.

Wofür braucht man SSH?

SSH ermöglicht es, dass zwei Computer eine sichere und direkte Verbindung innerhalb eines möglicherweise unsicheren Netzes – wie dem Internet – aufbauen. Das ist notwendig, damit Dritte nicht den Datenstrom abgreifen können und so sensible Daten in die falschen Hände geraten. Auch vor Secure Shell gab es Möglichkeiten, direkte Verbindungen zwischen zwei Rechnern herzustellen, doch die entsprechenden Anwendungen wie Telnet, Remote Shell oder rlogin waren durchweg unsicher. SSH verschlüsselt die Verbindung zwischen zwei Rechnern und ermöglicht, dass von einem Computer aus ein zweiter bedient werden kann.

SSH sorgt aber nicht nur für eine verschlüsselte Verbindung, sondern gewährleistet darüber hinaus, dass nur Verbindungen zwischen den dafür vorgesehenen Computern hergestellt werden (es ist also keine Man-in-the-Middle-Attack möglich) und die entsprechenden Daten nicht auf dem Weg zum Empfänger manipuliert werden können. Der Zugriff auf den entfernten Rechner erfolgte ursprünglich stets über die Kommandozeile. Über sie richtet man Befehle an das entfernte Gerät. Inzwischen ist es aber auch möglich, mithilfe von Virtual Network Computing (VNC) eine grafische Benutzeroberfläche (die bei Servern gar nicht immer vorhanden ist) auf den eigenen Rechner zu spiegeln und so den anderen Computer zu steuern.

SSH hat viele verschiedene Einsatzgebiete:

  • Verwaltung von Servern, auf die man nicht lokal zugreifen kann
  • Sichere Übermittlung von Dateien
  • Sicheres Erstellen von Back-ups
  • Verbindung zwischen zwei Rechnern mit Ende-zu-Ende-Verschlüsselung
  • Fernwartung von anderen Computern

Die Entwicklung von SSH hat auch andere Protokolle beeinflusst. So hat man beispielsweise das unsichere FTP-Protokoll, mit dem es möglich ist, Dateien auf einen Server zu laden und von dort dann wieder herunterzuladen, zum SSH File Transfer Protocol (SFTP) weiterentwickelt.

Ein Vorteil von SSH ist, dass das Protokoll auf allen gängigen Betriebssystemen läuft. Da es sich ursprünglich um eine Unix-Anwendung handelt, ist es zudem von Haus aus auf allen Linux-Distributionen und auf macOS implementiert. Aber auch unter Windows lässt sich SSH verwenden, sofern Sie ein entsprechendes Programm installieren.

SSH vs. OpenSSH

Secure Shell ist 1995 ursprünglich als Open-Source-Projekt entstanden. Im gleichen Jahr gründete der Entwickler Tatu Ylönen jedoch bereits eine Firma, die das Protokoll weiterentwickeln sollte. So hat sich das anfänglich offene Projekt immer mehr zu einer proprietären Software weiterentwickelt. Die Netzgemeinde hat das aber nicht einfach hingenommen und entwickelte auf Basis des SSH-1-Protokolls eine offene Abspaltung: OpenSSH. Da aber auch die Firma SSH Communication Security weiter an Secure Shell arbeitet, existieren inzwischen zwei konkurrierende Protokolle nebeneinander. Zum einen hat man das proprietäre SSH-2-Protokoll (eine Weiterentwicklung, da in SSH-1 Sicherheitslücken bekannt wurden) und zum anderen OpenSSH.

OpenSSH und das kommerzielle SSH sind sowohl von Funktionsweise als auch Umfang annähernd gleichwertig. Der Unterschied betrifft vor allem die Kosten, aber ebenso den Support. Entscheidet man sich für das Produkt der SSH Communication Security, erhält man zusätzlich einen 24/7-Support. Gerade bei großen Unternehmen mit wechselnden IT-Verantwortlichen kann dies sinnvoll sein. OpenSSH bietet hingegen durch die Open-Source-Gemeinde den Vorteil, dass das Projekt stetig und von vielen Teilnehmern weiterentwickelt wird.

Wie funktioniert SSH? Eine Erklärung

Secure Shell setzt mehrere Verschlüsselungs- und Authentifizierungstechniken ein. So wird zum einen sichergestellt, dass Datenströme weder gelesen noch manipuliert werden können. Zum anderen können dadurch nur autorisierte Teilnehmer miteinander Kontakt aufnehmen.

Authentifizierung

In einem ersten Schritt authentifizieren sich SSH-Server und Client untereinander. Der Server sendet ein Zertifikat an den Client, um zu verifizieren, dass es sich wirklich um den richtigen Server handelt. Nur bei der ersten Kontaktaufnahme besteht die Gefahr, dass sich ein Dritter zwischen die beiden Teilnehmer schaltet und so die Verbindung abfängt. Da das Zertifikat selbst auch verschlüsselt ist, kann es nicht imitiert werden. Weiß der Client einmal, wie das richtige Zertifikat lautet, kann kein anderer mehr vortäuschen, über den entsprechenden Server Kontakt aufzunehmen.

Nach der Server-Authentifizierung muss sich aber auch der Client gegenüber dem Server als zugangsberechtigt ausweisen Dafür kann man ein Passwort einsetzen. Dieses – beziehungsweise der verschlüsselte Hashwert davon – ist auf dem Server hinterlegt. Daraus resultiert aber auch, dass Nutzer bei jeder Anmeldung auf einem anderen Server während der gleichen Sitzung das Passwort eingegeben müssen. Deshalb gibt es als alternative Möglichkeit der clientseitigen Authentifizierung die Verwendung des Schlüsselpaares Public Key und Private Key.

Den Private Key erstellt man individuell für seinen eigenen Computer und sichert diesen mit einer Passphrase ab, die länger sein sollte als ein typisches Passwort. Der Private Key ist ausschließlich auf dem eigenen Rechner gespeichert und bleibt stets geheim. Möchte man eine SSH-Verbindung aufbauen, gibt man zunächst die Passphrase ein und öffnet so den Zugang zum Private Key.

Auf dem Server wiederum (wie auch auf dem Client selbst) liegen ebenfalls noch Public Keys. Der Server erstellt mit seinem Public Key ein kryptografisches Problem und sendet dies an den Client. Dieser wiederum entschlüsselt das Problem mit dem eigenen Private Key, sendet die Lösung zurück und teilt so dem Server mit, dass er eine rechtmäßige Verbindung aufbauen darf.

Während einer Sitzung muss man die Passphrase nur einmal eingeben, um Verbindung zu beliebig vielen Servern aufzunehmen. Zum Schluss der Sitzung melden sich die Nutzer an ihren lokalen Rechnern ab und stellen so sicher, dass kein Dritter, der physischen Zugang zur lokalen Maschine erhält, eine Verbindung zum Server aufnehmen kann.

Verschlüsselung

Nach der gegenseitigen Authentifizierung bauen die beiden Kommunikationsteilnehmer eine verschlüsselte Verbindung auf. Dafür wird für die Sitzung ein Schlüssel erzeugt, der nach Beendigung der Sitzung wieder abläuft. Dieser ist nicht zu verwechseln mit den Public-/Private-Key-Paaren, die nur zum Schlüsselaustausch dienen. Der Schlüssel, der für die symmetrische Verschlüsselung eingesetzt wird, ist nur für diese eine Sitzung gültig. Sowohl Client als auch Server verfügen über den gleichen Key und so können jegliche Nachrichten, die ausgetauscht werden, ver- und entschlüsselt werden. Client und Server erstellen den Schlüssel gleichzeitig, aber unabhängig voneinander. Beim sogenannten Key-Exchange-Algorithm verwenden beide Parteien bestimmte öffentliche und geheime Informationen und erstellen so den Schlüssel.

Eine weitere Form der Verschlüsselung findet in SSH durch Hashing statt. Ein Hash ist eine Form von Signatur der übermittelten Daten. Mit einem Algorithmus wird aus den Daten ein Hash erzeugt, der einmalig ist. Sollten Daten manipuliert werden, ändert sich automatisch auch der Hashwert. Daran kann der Empfänger erkennen, ob Daten auf dem Weg durch Dritte geändert wurden. Die Hashwerte sind so gestaltet, dass sie auch nicht einfach simuliert werden können. Idealerweise ist es niemals möglich, zwei unterschiedliche Übertragungen mit dem gleichen Hash zu erzeugen. Das nennt man Kollisionssicherheit.

SSH-Ports

TCP-Ports sind Endpunkte, die Server und Clients öffnen, um die Kommunikation zu ermöglichen. Wie bei einem Hafen (auf Englisch „Port“) empfangen und senden die Kommunikationspartner hierüber die Datenpakete. TCP verfügt über einen Adressraum von 16 Bit und so stehen 65535 Ports zur Verfügung. Die Internet Assigned Numbers Authority (IANA) hat allerdings einige Ports (genau 1024) für bestimmte Anwendungen fest vergeben: so auch den SSH-Port. Standardmäßig laufen alle SSH-Verbindungen über den Port 22.

Hinweis

Da der Port, über den SSH-Verbindungen laufen, allgemein bekannt ist und über diesen offenbar sensible Daten vermittelt werden, ist der SSH-Port für Cyberkriminelle ein favorisiertes Ziel. Deshalb halten einige Nutzer es für sinnvoll, den SSH-Port zu verlegen. Allerdings bietet dies nur einen kurzfristigen Schutz. Mit einem Portscanner ist es möglich, jegliche Ports, die ein Rechner verwendet, zu finden.

Mit SSH ist zudem Port-Forwarding möglich: Hierbei wird der SSH-Port eines Clients oder Servers von einem anderen Teilnehmer innerhalb eines lokalen Netzes benutzt, um eine gesicherte Verbindung über das Internet zu erstellen. Dafür kreieren die Teilnehmer einen Tunnel: Die Daten werden über den Port 22 empfangen und dann an den Client im lokalen Netzwerk weitergeleitet.

SSH-Clients

Der SSH-Client ist in der Regel der eigene PC, mit dem man eine Verbindung zum Server aufbauen möchte. Um dies zu schaffen, kann oder muss (abhängig vom Betriebssystem) man gesonderte Software installieren, die eine SSH-Verbindung aufbaut. Auch diese Programme nennt man in der Regel SSH-Client. Von der SSH Communication Security selbst stammt das kostenpflichtige Tectia SSH, das zusätzlich eine Server-Software enthält. Darüber hinaus existieren aber auch zahlreiche kostenlose Alternativen, wie zum Beispiel die Open-Source-Software PuTTy für Windows und Linux oder lsh, das auf allen Betriebssystemen funktioniert, die auf Unix basieren.

Tipp

Einige Programme bieten Nutzern eine grafische Oberfläche, mit der Konfiguration und das Einsetzen von SSH vereinfacht wird. Prinzipiell lässt sich Secure Shell auch über die Kommandozeile ausführen – unter macOS und anderen Unix-ähnlichen Betriebssystemen sogar ohne weitere Installation.

SSH-Server

Der SSH-Server ist das Gegenstück zum Client. Auch hier wird der Begriff zugleich für die Software verwendet. Ein großer Teil der Software für Clients funktioniert ebenfalls auf Servern. Darüber hinaus gibt es auch Software, die ausschließlich für SSH-Server gestaltet ist. Es ist üblich, SSH auf Servern bereits beim Hochfahren zu starten. Das garantiert, dass man jederzeit per SSH von außerhalb auf den Server zugreifen kann.

Es ist übrigens nicht notwendig, dass der SSH-Server tatsächlich ein Server im engeren Sinne ist, der in einem entfernten Rechenzentrum steht. Nutzer können auch zu Hause einen SSH-Server auf dem eigenen PC installieren, um so beispielsweise von den Vorteilen des Port-Forwarding zu profitieren.