SSH-Protokoll: Was ist es? Wie funktioniert es?

SSH-Protokoll: Was ist es? Wie funktioniert es?

Read 11 minutes

SSH wird häufig für die Verwaltung der Netzwerkinfrastruktur, die Übertragung von Dateien und die Ausführung von Remote-Befehlen verwendet. In diesem Artikel erklären wir, was das SSH-Protokoll ist, wie es funktioniert und warum es wichtig ist.

Was ist SSH?

SSH bedeutet Secure Shell, was bedeutet, dass es eine Shell (eine Befehlszeilenschnittstelle) bereitstellt, die sicher ist (verschlüsselt und authentifiziert). SSH kann auch andere Dinge tun, wie z. B. Dateien senden, Programme ausführen oder Einstellungen auf einem anderen Computer ändern.

Secure Shell ist ein Regelwerk, das Computern vorschreibt, wie sie sicher miteinander kommunizieren können. Es besteht aus drei Hauptkomponenten: der Transportschicht, der Benutzerauthentifizierungsschicht und der Verbindungsschicht. Der Transportteil stellt sicher, dass die Computer einander vertrauen können und dass niemand sie ausspionieren oder ihre Nachrichten verändern kann. Der Benutzerteil stellt sicher, dass nur die richtige Person auf den anderen Computer zugreifen kann. Die Verbindungsschicht stellt sicher, dass die Computer verschiedene Dinge gleichzeitig tun können, z. B. Befehle eingeben, Dateien senden oder Programme öffnen.

Das SSH-Protokoll schützt vor verschiedenen Angriffen wie Lauschangriffen, Manipulationen, Spoofing oder Man-in-the-Middle-Angriffen. Secure Shell ermöglicht es Benutzern außerdem, verschiedene Aufgaben aus der Ferne auszuführen, ohne ihre Kennwörter oder Daten Hackern oder böswilligen Akteuren preiszugeben.

Es überträgt jede Art von Daten über den verschlüsselten Kanal, solange sowohl der Client als auch der Server das gleiche Protokoll unterstützen. SSH kann zum Beispiel Text-, Binär-, Audio-, Video- oder Bilddateien mit SCP oder SFTP übertragen. Sie können auch andere Arten von Daten wie Grafiken, TCP/IP-Ports oder Sockets mit Hilfe von Portweiterleitung oder Tunneling senden.

Eine der nützlichsten Funktionen von SSH ist die Möglichkeit, Tunnel oder Proxys zu erstellen. Mit dieser Funktion können Benutzer den Netzwerkverkehr von einem Port oder einer Adresse zu einem anderen Port oder einer anderen Adresse über Secure Shell weiterleiten oder umleiten. Dies kann nützlich sein, um Firewalls zu umgehen, auf eingeschränkte Ressourcen zuzugreifen, unsichere Protokolle zu verschlüsseln oder Netzwerkaktivitäten zu verbergen.

Was ist die Geschichte des SSH-Protokolls?

Das sichere Anmeldeprotokoll wurde 1995 von dem finnischen Informatiker Tatu Ylönen entwickelt. Er wollte eine bessere Möglichkeit schaffen, sich mit anderen Computern zu verbinden als mit den alten Methoden, die nicht sicher waren und leicht gehackt werden konnten. Er veröffentlichte die erste Version von SSH (SSH-1) als freie Software unter einer Open-Source-Lizenz. Später gründete er ein Unternehmen zur Entwicklung und Vermarktung von SSH-Produkten.

SSH hieß zunächst Secure Remote Login (SRL), wurde dann aber in Secure Shell (SSH) umbenannt, weil SRL bereits von einem anderen Programm verwendet wurde. Eine weitere lustige Tatsache ist, dass SSH durch den James-Bond-Film GoldenEye inspiriert wurde, in dem ein Hacker ein ähnliches Tool verwendet, um in ein Satellitenkontrollsystem einzubrechen.

Im Jahr 1996 begann eine Gruppe von Entwicklern unter der Leitung von Björn Grönvall mit der Arbeit an einer freien Implementierung von SSH namens OpenSSH, die auf dem Quellcode einer früheren Version von Secure Shell basierte. OpenSSH wurde 1999 als Teil des OpenBSD-Betriebssystems veröffentlicht und wurde bald die beliebteste Implementierung von SSH. OpenSSH fügte viele Funktionen und Verbesserungen zu SSH hinzu, wie z. B. Unterstützung für SSH-2 (eine überarbeitete Version des Protokolls mit verbesserter Sicherheit und Funktionalität), X11-Weiterleitung, Agentenweiterleitung und IPv6-Unterstützung.

Im Jahr 2006 veröffentlichte die Internet Engineering Task Force (IETF) eine Reihe von RFCs, die das Secure Shell-Protokoll als Internet-Standard standardisierten. Die RFCs umfassen das Kernprotokoll, das Transportschichtprotokoll, das Benutzerauthentifizierungsprotokoll, das Verbindungsprotokoll sowie verschiedene Erweiterungen und Algorithmen.

Wie funktioniert SSH?

Dieverschlüsselte Fernanmeldung funktioniert mit zwei Computern: einem Client und einem Server. Der Client ist der Computer, mit dem Sie sich mit dem Server verbinden. Der Server ist der Computer, auf dem Sie etwas tun wollen. Der Client und der Server verwenden ein spezielles Programm namens SSH, um miteinander zu kommunizieren.

Der erste Schritt besteht darin, die Verbindung zu starten, indem Sie dem Client mitteilen, mit welchem Server Sie sich verbinden wollen. Sie können dies tun, indem Sie etwas wie das Folgende in Ihr Terminal eingeben:

ssh username@ip_address

Das bedeutet: mit Secure Shell eine Verbindung zum Server mit dieser IP-Adresse (eine Nummer, die einen Computer im Internet identifiziert) unter Verwendung dieses Benutzernamens (ein Name, der einen Benutzer auf dem Computer identifiziert) herzustellen.

Der zweite Schritt besteht darin, mit Hilfe der Public-Key-Kryptografie zu prüfen, ob Sie dem Server vertrauen können. Bei dieser Methode werden mit Hilfe von Mathematik geheime Codes erstellt, die nur zwei Personen verstehen können. Der Server hat zwei Codes: einen öffentlichen Schlüssel und einen privaten Schlüssel. Der öffentliche Schlüssel ist wie ein offenes Schloss, das jeder sehen kann. Der private Schlüssel ist wie ein geheimer Schlüssel, den nur der Server hat. Der Server sendet seinen öffentlichen Schlüssel an den Client, der prüft, ob er mit einem vertrauenswürdigen Schlüssel übereinstimmt, der auf Ihrem Computer gespeichert ist oder von einer vertrauenswürdigen Person stammt. Wenn der Schlüssel vertrauenswürdig ist, können Sie fortfahren. Ist er nicht vertrauenswürdig, können Sie den Vorgang abbrechen oder den Schlüssel nach Prüfung seines Fingerabdrucks (ein kurzer Code, der ihn identifiziert) akzeptieren.

Im dritten Schritt müssen Sie sich gegenüber dem Server mit Hilfe der Benutzerauthentifizierung ausweisen. Auf diese Weise können Sie nachweisen, dass Sie auf den Server zugreifen dürfen. Es gibt verschiedene Möglichkeiten, dies zu tun, z. B. Passwörter, öffentliche Schlüssel oder Zertifikate. Am gebräuchlichsten sind Passwörter und öffentliche Schlüssel. Die Passwort-Authentifizierung ist einfach, aber nicht sehr sicher. Dabei geben Sie Ihr Kennwort in Ihren Client ein und senden es über eine geheime Verbindung an den Server. Der Server prüft, ob es mit dem für Ihren Benutzernamen gespeicherten Passwort übereinstimmt.

Die Authentifizierung mit öffentlichem Schlüssel ist sicherer, erfordert aber mehr Einstellungen. Dabei wird ein weiteres Code-Paar verwendet: ein privater Schlüssel und ein öffentlicher Schlüssel. Der private Schlüssel ist wie ein geheimer Schlüssel, den Sie bei Ihrem Client aufbewahren und niemals an andere weitergeben. Der öffentliche Schlüssel ist wie ein offenes Schloss, das Sie dem Server vor der Verbindung mitteilen. Sie können diese Schlüssel mit einem Tool wie ssh-keygen erstellen und sie mit einem Tool wie ssh-copy-id auf den Server kopieren. Der Server speichert Ihren öffentlichen Schlüssel in einer Datei namens authorized_keys in Ihrem Home-Ordner (wo Sie Ihre Dateien auf dem Server aufbewahren). Wenn Sie sich mit der Authentifizierung mit öffentlichem Schlüssel anmelden, erstellt Ihr Client eine geheime Nachricht mit Ihrem privaten Schlüssel und sendet sie an den Server, der sie mit Ihrem öffentlichen Schlüssel überprüft.

Nach erfolgreicher Benutzerauthentifizierung kann der Client einen oder mehrere Dienste des Servers über verschiedene Kanäle innerhalb des verschlüsselten Tunnels anfordern. Der gebräuchlichste Dienst ist der Shell-Zugang, mit dem der Benutzer Befehle auf dem entfernten Server ausführen kann. Ein weiterer gängiger Dienst ist die Dateiübertragung, mit der der Benutzer Dateien zwischen dem lokalen und dem entfernten System über Protokolle wie SCP (Secure Copy Protocol) oder SFTP (SSH File Transfer Protocol) kopieren kann. SCP ist ein veraltetes Protokoll, das Secure Shell für die sichere Übertragung von Dateien verwendet, aber einige Einschränkungen und Nachteile aufweist. SFTP ist ein moderneres und flexibleres Protokoll, das Dateizugriff, Dateiübertragung und Dateiverwaltungsfunktionen über SSH bietet.

Wofür wird das SSH-Protokoll häufig verwendet?

Das Secure-Socket-Shell-Protokoll wird häufig für verschiedene Zwecke verwendet, wie z. B.:

  • Sicherer Zugang für Benutzer und automatisierte Prozesse zu entfernten Systemen
  • Sichere Übertragung von Dateien zwischen lokalen und entfernten Systemen
  • Remote-Ausführung von Befehlen auf entfernten Systemen
  • Verwaltung der Netzwerkinfrastruktur und anderer unternehmenskritischer Systemkomponenten
  • Tunneln von anderen Protokollen oder Anwendungen
  • Proxying von Netzwerkverkehr

Fazit

Secure Shell ist ein leistungsstarkes und vielseitiges Tool, das eine sichere Fernanmeldung, Dateiübertragung und Befehlsausführung über ungesicherte Netzwerke ermöglicht. Es verwendet Public-Key-Kryptografie und symmetrische Verschlüsselung, um Server-Authentifizierung, Benutzer-Authentifizierung, Vertraulichkeit und Integrität zu gewährleisten. Mit SSH können Sie auch verschiedene Dinge auf dem anderen Computer tun, z. B. Befehle eingeben, Dateien senden oder Programme öffnen. Ein sicheres Anmeldeprotokoll ist sehr wichtig für jeden Linux-/Windows-Benutzer oder -Administrator, der sicher und effizient mit entfernten Systemen arbeiten möchte.