Die Abkürzung SSH steht für Secure Shell, Secure Shell ist ein Netzwerkprotokoll, mit dem sichere Verbindungen zwischen zwei Geräten über ein potenziell unsicheres Netzwerk eingerichtet werden können. Mit Secure Shell kann eine verschlüsselte Verbindung von einem lokalen Computer zur Kommandozeile (Shell) auf einem Webserver oder einem anderen Gerät hergestellt werden. Eingaben auf dem lokalen Computer werden an den Server übertragen und Ausgaben der entfernten Konsole auf dem lokalen Computer angezeigt.

Die Übermittlung von Daten und die Fernwartung oder Steuerung von Servern über das Internet ist potenziell unsicher. Um die Kommunikation über ein unsicheres Netzwerk wie dem Internet vor Angriffen und unbefugten Zugriffen zu schützen, ist eine sichere Verbindung erforderlich. Seit Mitte der 1990er-Jahre wird SSH eingesetzt, um Verbindungen über das Internet und andere Netzwerke abzusichern.

Die erste Version von SSH, heute SSH-1 bezeichnet, wurde vom finnischen Entwickler Tatu Ylönen 1995 vorgestellt. Bereits im Dezember des gleichen Jahres gründete Tatu Ylönen das Unternehmen SSH Communication Security, um Secure Shell als proprietäre Software zu vertreiben. Nur wenig später wurde auf der Grundlage von SSH-1 OpenSSH entwickelt. OpenSSH ist kostenlos. Die aktuelle von der Internet Engineering Task Force (IETF) zertifizierte kostenpflichtige Version ist SSH-2. Sie wurde entwickelt, da die erste Version Sicherheitslücken aufwies.

Wofür wird SSH verwendet?

SSH ermöglicht Nutzern den Aufbau einer sicheren, authentifizierten und verschlüsselten Verbindung zwischen zwei Computern über ein potenziell unsicheres Netzwerk wie dem Internet. Das Secure Shell Protokoll bietet Nutzern drei wichtige Eigenschaften:

  • Authentifizierung der Gegenstelle
  • Verschlüsselung der Datenübertragung
  • Datenintegrität

Bei der Verwendung von Secure Shell wird sichergestellt, dass eine Verbindung nur zwischen den zwei Computern aufgebaut wird, die miteinander verbunden werden sollen. Dadurch die Verschlüsselung ist ein Abhören der übermittelten Daten durch einen Man-in-the-Middle-Angriff nicht möglich. Die übertragenen Daten können zudem nicht manipuliert werden.

Einsatzgebiete von Secure Shell sind:

  • Remote-Systemadministration
  • Remote-Befehlsausführung,
  • sichere Datenübermittlung
  • Aufruf, Ändern und Speichern von Dateien
  • sichere Erstellung von Backups

SSH Client und SSH Server

Das SSH-Protokoll basiert auf dem Client/Server-Modell. Der lokale Computer ist in der Regel der Client. Client ist gleichzeitig die Bezeichnung für die installierte Secure Shell Software. Diese Software ist standardmäßig auf UNIX-, Linux– und MacOS-Rechnern vorhanden. In Windows wurde SSH erstmals ab der Version 1709 implementiert. In Windows 10 ist ein OpenSSH-Client seit dem Oktober 2018 Update (Version 1809) standardmäßig installiert.

Mehr zum Thema:
Was ist SHA256?

Für ältere Windows Versionen muss die Secure Shell Software separat installiert werden. Das bekannteste kostenlose SSH Software Tool für Windows Betriebssysteme ist Putty. Alternativ kann das von der SSH Communications Security vertriebene kostenpflichtige Tectia SSH installiert werden. Dieses Tool enthält zusätzlich die benötigte Server Software. Die Bezeichnung SSH-Server wird für einen physischen Server und eine Software, die beispielsweise auf einem Webserver installiert ist, gleichermaßen verwendet. Der Server ist der Kommunikationspartner des Clients.

Wie funktioniert SSH?

Die beiden zentralen Funktionen von SSH sind die Authentifizierung der beiden beteiligten Computer und die Verschlüsselung der Daten. Der Aufbau einer sicheren Verbindung geht immer vom Client aus. Der Server registriert eingehende Verbindungsanforderungen und antwortet darauf. Normalerweise gelangen Verbindungsaufforderungen über den TCP-Port 22 auf das Hostsystem. Sobald der Server eine Verbindungsaufforderung erhält, beginnt der Verbindungsaufbau mit der Authentifizierung.

Authentifizierung von Server und Client

Die Authentifizierung über SSH ist mit einem auf den Server hinterlegten Passwort möglich. Da dass Passwort erraten werden kann, ist bei Secure Shell alternativ die Authentifizierung mit dem Public-Key-Verfahren möglich. Bei diesem Verfahren werden ein öffentlicher und ein privater Schlüssel verwendet. Um dieses Verfahren nutzen zu können, muss zunächst ein Schlüsselpaar auf dem lokalen Client erzeugt werden. Der private Schlüssel liegt immer auf dem Client und muss vor unbefugten Zugriffen gesichert werden. Der öffentliche Schlüssel wird auf den Server übertragen.

Für die Authentifizierung schickt der Server eine zufällig generierte und mit dem öffentlichen Schlüssel des Clients verschlüsselte sogenannte „Challenge“ an den Client. Diese Challenge kann nur mit dem privaten Schlüssel des Clients wieder entschlüsselt werden. Die entschlüsselte Challenge wird vom Client an den Server zurückgesendet. Ist die Entschlüsselung korrekt, ist die SSH Authentifizierung abgeschlossen und die Identität des Benutzers bestätigt.

Verschlüsselung der übertragenen Daten

Nach dem Abschluss der gegenseitigen Authentifizierung von Client und Server kann die verschlüsselte Verbindung über SSH aufgebaut werden. Für diese Verbindung wird ein eigener Schlüssel erzeugt. Dieser Schlüssel ist nur für eine Sitzung gültig und verfällt, wenn die Sitzung beendet wurde. Für die sichere Verbindung nutzen Server und Client den gleichen Schlüssel. So können ausgetauschte Nachrichten von beiden Teilnehmern verschlüsselt und wieder entschlüsselt werden. Die Erstellung des Schlüssels erfolgt gleichzeitig auf dem Server und dem Client, ist aber unabhängig voneinander. Für die Erstellung des Schlüssels werden geheime und bestimmte öffentliche Informationen, die beide Verbindungspartner kennen, verwendet.

Mehr zum Thema:
Was ist Kali Linux?

Zusätzlich werden die über SSH übermittelten Daten durch Hashing gesichert. Hierzu wird aus den Daten mithilfe eines Algorithmus ein sogenannter Hash erstellt. Ein Hash ist im Prinzip wie ein Fingerabdruck oder eine eindeutige Signatur für einen bestimmten Datensatz. Werden die Daten bei der Übertragung verändert, verändert sich auch der Hashwert. Dadurch kann sichergestellt werden, dass die Daten während der Übertragung nicht manipuliert worden sind.

Letzte Artikel von Daniel Faust (Alle anzeigen)