Der Begriff SSH steht für Secure Shell und meint ein Netzwerkprotokoll, mit dem eine gesicherte Verbindung zwischen zwei Computern (Client und Server) aufgebaut wird.
In der Informatik bezeichnet “Shell” dabei den Teil des Betriebssystems, über welchen der Anwender auf den Computer zugreifen kann. Darunter versteht man normalerweise die Kommandozeile oder das Terminal, aber auch die grafische Benutzeroberfläche.
Da das Netzwerkprotokoll eine Verbindung zur Shell eines anderen Computers herstellt, nennt man das Verfahren zum Verbindungsaufbau Secure Shell. Es kann damit als sicherer Nachfolger von Seriellen-Konsolen und auch s.g. Telnet-Verbindungen angesehen werden.
Mittels verschiedener Verschlüsselungs- und Authentifizierungsmethoden wird verhindert, dass Datenübertragungen ungewollt ausgelesen oder manipuliert werden. Vor allem im Internet spielt die Sicherheit eine zentrale Rolle und SSH ermöglicht hier eine direkte und sichere Verbindung innerhalb dieses möglicherweise unsicheren Netzes.
SSH-Server und Client müssen sich hierzu zunächst gegenseitig authentifizieren. Dazu sendet der Server ein verschlüsseltes Zertifikat an den Client, um zu verifizieren, dass es sich wirklich um den richtigen Server handelt. Nach dem Austausch des Zertifikats kann kein weiterer Teilnehmer mehr über den Server Kontakt aufnehmen.
Im Anschluss an die Server-Authentifizierung, erfolgt die Client-Authentifizierung. Hierfür kann ein Passwort verwendet werden, das verschlüsselt auf dem Server gespeichert wird. Der Nachteil ist jedoch, dass bei jedem Wechsel des Servers, das Passwort erneut eingegeben werden muss.
Als alternative Methode empfiehlt sich deshalb die Verwendung eines Schlüsselpaares (Public- und Private Key). Der vom Client erstellte Private Key sollte zur Erhöhung der Sicherheit, Passwortgeschützt auf einer sicheren Enklave (Secure Enclave) oder in einem Passwort Manager abgelegt werden. Der Public Key, das Gegenstück zum Private Key, wird vom Client an den Server gesendet und verbleibt dort. Auf diese Weise muss während einer Sitzung das Passwort nur einmal eingegeben werden, um Verbindung zu beliebig vielen Servern aufzunehmen.
Initiiert der SSH-Client nun eine SSH-Verbindungsanfrage an den Server, antwortet dieser mit einer zufälligen Nachricht. Diese Nachricht verschlüsselt der Client mit dem privaten Schlüssel und sendet sie zurück an den Server. Unter Verwendung des öffentlichen Schlüssels, der das Gegenstück zum privaten Schlüssel des Clients darstellt, entschlüsselt der Server die Nachricht und überprüft, ob der öffentliche und der private Schlüssel Teil eines Paares sind.
Im Anschluss an die gegenseitige Authentifizierung bauen beide Kommunikationsteilnehmer eine verschlüsselte Verbindung (SSH-Tunnel) auf und einigen sich auf einen gemeinsamen Sitzungsschlüssel. Der Sitzungsschlüssel wird vom Client und Server gleichzeitig aber unabhängig erstellt, ist nur für die Dauer der jeweiligen Sitzung gültig und ist nicht zu verwechseln mit den Public- und Private-Key-Paaren. Mit dem Sitzungsschlüssel werden jegliche Nachrichten ver- und entschlüsselt die zwischen Client und Server ausgetauscht werden. Dadurch wird es für unbefugte schwierig, Daten abzufangen oder zu entschlüsseln.
Neben dem Fernzugriff für die Remote-Verwaltung von Systemen, wird SSH auch zur sicheren Übertragung von Dateien, beim Back-up-Management oder für die Ende-zu-Ende-Verschlüsselung zwischen zwei Rechnern verwendet.
Entwickelt wurde die erste Version des Protokolls (jetzt SSH-1 genannt) im Jahr 1995. Veröffentlicht als Freeware gewann es schnell an Popularität. 2006 veröffentlichte man SSH-2, nachdem einige Schwachstellen in der Integritätsprüfung von SSH-1 bekannt geworden waren.