Was ist SSH und wie funktioniert es?

SSH ist ein Protokoll für eine sichere Netzwerkverbindung, das den Zugriff auf Computer in einem Netzwerk aus der Ferne ermöglicht.

Computer tauschen Daten über Netzwerke aus. Daher legten Netzwerkexperten eine Reihe von Regeln für die Kommunikation zwischen Maschinen fest und entwickelten Protokolle wie Telnet. Telnet ermöglicht es einem Benutzer, die Kontrolle über einen anderen Rechner zu übernehmen.

Diese Protokolle waren jedoch unsicher, da jeder, der sich im Netzwerk befand, die übertragenen Daten abfangen und einsehen konnte. Mitte der 90er Jahre wurde ein sicherer Nachfolger des Telnet-Protokolls, SSH, eingeführt.

Softwareentwickler und Systemadministratoren nutzen SSH häufig. Wenn Sie es noch nicht kennen, sollten Sie es jetzt lernen, da es eine wichtige Fähigkeit ist.

Was bedeutet SSH?

SSH, auch bekannt als Secure Shell oder Secure Socket Shell, ist ein Netzwerkprotokoll, das einen sicheren Zugriff und die Kommunikation mit entfernten Rechnern, insbesondere Servern, ermöglicht.

Es bietet eine starke Verschlüsselung und wird von Netzwerkadministratoren und Entwicklern zur Verwaltung von Remote-Systemen, Anwendungen, zur Befehlsausführung und zum Dateiaustausch verwendet.

Warum ist SSH notwendig?

SSH wurde 1995 entwickelt, um Sicherheitsprobleme von unsicheren Protokollen für den Fernzugriff wie rlogin, rsch und Telnet zu beheben.

Telnet, das für Teletype Network steht und 1969 entwickelt wurde, ist ein einfaches Befehlszeilentool, das es ermöglicht, von einem Computer auf einen entfernten Server zuzugreifen und Befehle auszuführen, als säße man direkt davor. Telnet sendet und empfängt Nachrichten unverschlüsselt über das Netzwerk.

Über Telnet können Programme ausgeführt, Verzeichnisse erstellt, Dateien verwaltet und Dienste gestartet oder beendet werden.

Das Problem bei der Netzwerkkommunikation ist, dass die Datenübertragung durch viele Netzwerke erfolgt. Diese Netzwerke können unsicher sein und die Daten können abgefangen oder verändert werden, bevor sie den Zielrechner erreichen.

In der Frühzeit des Internets, als Sicherheit noch nicht so wichtig war, erfolgte die gesamte Kommunikation unverschlüsselt. Dadurch konnten die Daten zwischen Client und Server leicht abgefangen und gelesen werden, da keine Verschlüsselung eingesetzt wurde.

Unverschlüsselte Protokolle sind daher extrem unsicher und sollten niemals für die Übertragung vertraulicher Daten wie Passwörter verwendet werden. SSH gilt daher als sichere Alternative zu älteren Protokollen für den Fernzugriff.

Wie funktioniert SSH?

SSH verwendet eine Client-Server-Architektur, um die sichere Netzwerkkommunikation zu gewährleisten. Ein SSH-Client stellt dabei eine Verbindung zu einem SSH-Server her. Standardmäßig lauscht der SSH-Server am TCP-Port 22 (dies kann für mehr Sicherheit geändert werden).

Es nutzt Public-Key-Kryptografie zur Authentifizierung zwischen Client und Server. Zusätzlich verwendet das Protokoll starke symmetrische Verschlüsselungs- und Hash-Algorithmen für den Datenaustausch, um den Datenschutz und die Datenintegrität sicherzustellen.

Linux ist aufgrund seiner Sicherheit und Zuverlässigkeit das am häufigsten verwendete Betriebssystem für Remote-Server. Viele Linux-Server laufen jahrelang ohne Ausfälle oder Neustarts.

Die meisten SSH-Sitzungen (also die Zeit, in der wir auf den Remote-Server zugreifen) umfassen im Wesentlichen die folgenden zwei Schritte:

  • Authentifizierung
  • Befehlsausführung

SSH-Server können Clients auf verschiedene Arten authentifizieren.

Die zwei gängigsten Methoden sind:

Die passwortbasierte Authentifizierung ist die Standardmethode für Clients, die OpenSSH installiert haben. Sie ist die einfachste, aber nicht die sicherste Form der SSH-Authentifizierung.

Moderne Brute-Force-Angriffe können die Authentifizierung umgehen, auch wenn Passwörter sicher an den Server gesendet werden.

Die schlüsselbasierte Authentifizierung mit SSH-Schlüsselpaaren erhöht die Sicherheit deutlich und ist eine zuverlässige und sichere Alternative.

Nach erfolgreicher Authentifizierung des Clients wird eine sichere Verbindung zwischen Client und Server hergestellt.

Zugriff auf einen Remote-Server mit SSH

Mac- und Linux-Nutzer können das Terminal direkt verwenden, um SSH-Befehle einzugeben und auszuführen, da OpenSSH in der Regel vorinstalliert ist.

Windows-Nutzer benötigen einen Terminal-Emulator eines Drittanbieters, um SSH-Befehle auszuführen. PuTTY ist der bekannteste SSH-Client für Windows.

Um sich per SSH mit einem Remote-Server zu verbinden, benötigt man mindestens zwei Informationen.

Die Syntax für den grundlegenden SSH-Befehl lautet:

$ ssh <benutzername> @ <host> -p <portnummer>

Der Benutzername ist der Name des Benutzers auf dem entfernten Computer (nicht der auf dem lokalen Computer). Der Host ist entweder eine IP-Adresse oder ein Domainname.

Ein Beispiel für die Verbindung zu einem Remote-Server finden Sie auf der OverTheWire-Webseite, einer kostenlosen Wargame-Challenge-Seite.

Verbinden wir uns nun mit der Bandit-Challenge mit SSH. Diese Challenge auf der Webseite lehrt die Anmeldung per SSH.

Hier sind die Anmeldedaten:

Benutzername & Passwort: bandit0
Host & Port: bandit.labs.overthewire.org, 2220

Geben Sie den folgenden Befehl ein und drücken Sie Enter:

$ ssh [email protected]verthewire.org -p 2220

Sie werden nun zur Eingabe des Passworts aufgefordert. Geben Sie das Passwort ein und drücken Sie Enter:

Wenn das Passwort korrekt ist, sind Sie erfolgreich am Remote-Server angemeldet. Ihr Terminal sollte wie auf dem obigen Bild aussehen.

Nun können Sie über das Terminal des Remote-Computers Befehle ausführen.

Um die SSH-Sitzung zu beenden, geben Sie den Befehl exit ein:

$ exit

Die Meldung „Verbindung geschlossen“ wird angezeigt, wenn Sie sich erfolgreich von der SSH-Sitzung abgemeldet haben.

Fazit

Die Popularität von SSH beruht hauptsächlich darauf, dass die gesamte Kommunikation zwischen Server und Client verschlüsselt wird.

Viele denken, SSH sei kompliziert, aber es ist einfacher als man glaubt. Sie haben nun ein grundlegendes Verständnis von SSH, seiner Funktionsweise, den Sicherheitsaspekten und seiner Bedeutung für die Kommunikation.

Weitere Informationen finden Sie in Ressourcen für Systemadministratoren.