SSH ist ein gesichertes Netzwerkprotokoll für den Zugriff auf entfernte Computer in einem Netzwerk.
Computer kommunizieren über Netzwerke miteinander. Daher haben Netzwerkforscher eine Reihe von Regeln für die Kommunikation mit anderen Computern festgelegt und Protokolle wie Telnet entwickelt, mit denen ein Benutzer die Kontrolle über einen anderen Computer übernehmen kann.
Aber sie sind nicht sicher, d.h. jeder in der Mitte des Netzwerks kann die übertragenen Daten abfangen und lesen. Mitte der 90er Jahre wurde ein sichereres Protokoll namens ssh als zuverlässiger Nachfolger des Telnet-Protokolls eingeführt.
Wenn Sie als Softwareentwickler oder Systemadministrator in der Industrie tätig sind, haben Sie vielleicht schon einmal ssh verwendet, zumindest ein einziges Mal. Wenn nicht, sollten Sie es jetzt lernen, denn es gehört zu den unverzichtbaren Grundkenntnissen.
Was ist SSH?
SSH oder Secure Shell oder Secure Socket Shell ist ein Netzwerkprotokoll, das uns hilft, sicher auf entfernte Rechner (meist entfernte Server) zuzugreifen und mit ihnen zu kommunizieren.
Es bietet eine starke Verschlüsselung und wird häufig von Netzwerkadministratoren und Entwicklern verwendet, um entfernte Systeme und Anwendungen zu verwalten, Befehle auszuführen, Dateien auszutauschen usw.
Notwendigkeit von SSH
SSH wurde 1995 entwickelt, um Sicherheitsprobleme zu lösen, die bei ungesicherten Fernzugriffsprotokollen wie rlogin, rsh und Telnet auftraten.
Lassen Sie uns nun über Telnet sprechen, das für Teletype Network steht und 1969 entwickelt wurde. Es handelt sich um ein einfaches Befehlszeilentool, das auf Ihrem Computer läuft, um auf einen entfernten Server (irgendwo auf der Welt) zuzugreifen. Und Befehle senden, die auf diesem Server ausgeführt werden, als ob Sie direkt vor dem entfernten Server sitzen würden (auch wenn dieser meilenweit entfernt ist). Telnet sendet und empfängt Nachrichten im Klartext über ein Netzwerk.
Die Befehle, die Sie ausführen würden, könnten Programme ausführen, Verzeichnisse erstellen, Dateien erstellen/löschen/übertragen, Dienste starten/stoppen usw.
Das Problem beim Anschluss eines anderen Rechners an ein Netzwerk ist, dass die zu übertragenden Daten viele Netzwerke durchlaufen. In der Zwischenzeit könnten einige davon unsicher sein und die übertragenen Daten könnten abgefangen und möglicherweise verändert werden, bevor sie den beabsichtigten Zielcomputer erreichen.
In der Anfangszeit, als Sicherheit noch nicht so wichtig war, erfolgte die gesamte Kommunikation im Klartext. Daher können die Daten, die über das Internet zwischen Client und Server übertragen werden, leicht abgefangen werden. Und sie können gelesen werden, da die Nachrichten nicht verschlüsselt sind.
Daher sind Klartextprotokolle extrem unsicher und sollten niemals für die Übertragung sensibler Daten wie Kennwörter, Geheimnisse usw. verwendet werden. Daher wird SSH als sichere Alternative zu herkömmlichen Netzwerkprotokollen für den Fernzugriff angesehen.
Wie funktioniert es?
SSH verwendet eine Client-Server-Architektur für die sichere Kommunikation über das Netzwerk, indem ein ssh-Client mit dem ssh-Server verbunden wird. Standardmäßig hört der ssh-Server auf den Standard-TCP-Port 22 (Sie können dies für mehr Sicherheit ändern).
Es verwendet eine Public-Key-Verschlüsselungstechnik zur Authentifizierung zwischen Client und Server. Darüber hinaus verwendet das Protokoll starke symmetrische Verschlüsselungs- und Hash-Algorithmen für den Austausch von Nachrichten zwischen Client und Server, um Datenschutz und Datenintegrität zu gewährleisten.
Linux ist das am weitesten verbreitete Betriebssystem für Remote-Server, da es sicher und langlebig ist. Viele Server im Internet, die mit dem Linux-Betriebssystem arbeiten, laufen seit Jahren, ohne dass es zu Ausfällen oder gar einem Neustart gekommen ist.
Die meisten SSH-Sitzungen (ein Zeitraum, in dem wir auf den entfernten Server zugreifen) haben nur die folgenden zwei Vorgänge:
- Authentifizierung
- Ausführung von Befehlen
SSH-Server können Clients mit einer Vielzahl von Methoden authentifizieren.
Die beiden beliebtesten Methoden sind:
- Passwortbasiert
- Schlüssel-basiert
Diekennwortbasierte Authentifizierung ist die Standardmethode für die Authentifizierung von OpenSSH installierten Clients. Es ist die einfachste ssh-Authentifizierung, aber nicht die sicherste.
Auch wenn die Passwörter sicher an den Server gesendet werden, können moderne Brute-Force-Angriffe die Authentifizierung umgehen.
Dieschlüsselbasierte Authentifizierung verbessert die Systemsicherheit noch weiter, indem sie SSH-Schlüsselpaare erzeugt, die sich als zuverlässige und sichere Alternative erweisen.
Nachdem der Server den Client erfolgreich authentifiziert hat, wird eine sichere Verbindung zwischen den beiden hergestellt.
Zugriff auf einen entfernten Server mit SSH
Wenn Sie ein Mac/Linux-Benutzer sind, können Sie ssh-Befehle direkt über das Terminal eingeben und ausführen, da OpenSSH bereits standardmäßig installiert ist.
Wenn Sie ein Windows-Benutzer sind, müssen Sie einen Terminalemulator-Client eines Drittanbieters installieren, um ssh-Befehle auszuführen. PuTTY ist der beliebteste ssh-Client für Windows-Betriebssysteme.
Um sich über SSH mit einem entfernten Server zu verbinden, müssen Sie mindestens zwei Dinge wissen.
- server-Host
- nutzername
Die Syntax für den grundlegenden ssh-Befehl lautet:
$ ssh <Benutzername> @ <Host> -p <Port-Nr>
Der Benutzername ist der Benutzername des entfernten Rechners, mit dem wir uns verbinden wollen (und nicht der Benutzer auf Ihrem lokalen Rechner), und der Host ist entweder eine IP-Adresse oder ein Domänenname.
Sehen wir uns ein Beispiel für die Verbindung zu einem entfernten Server über die Website OverTheWire an. Das ist eine kostenlose Website für Kriegsspiele.
Verbinden wir uns nun mit der Bandit-Herausforderung über ssh. Dies ist eine der verfügbaren Herausforderungen auf der Website, bei der Sie lernen, wie man sich mit SSH anmeldet.
Anmeldedaten:
benutzername & Passwort: bandit0
host & Port: bandit.labs.overthewire.org, 2220
Wenn Sie den folgenden Befehl eingeben und die Eingabetaste drücken:
$ ssh bandit0@bandit.labs.overthewire.org -p 2220
Sie werden nach dem Passwort für die Authentifizierung gefragt. Geben Sie nun das Passwort ein und drücken Sie die Eingabetaste:
Wenn das eingegebene Passwort korrekt ist, haben Sie sich erfolgreich beim Remote-Server angemeldet, und Ihr Terminal sieht wie das obige Bild aus.
Jetzt können Sie das Terminal des entfernten Rechners verwenden, um Ihre Befehle einzugeben und auszuführen und die notwendigen Operationen durchzuführen.
Wenn Sie die ssh-Sitzung beenden möchten, geben Sie den Befehl exit ein:
$ exit
Sie erhalten die Meldung “Verbindung geschlossen” , wenn Sie sich erfolgreich von der ssh-Sitzung abmelden.
Fazit
Der Hauptgrund für die Beliebtheit von SSH ist, dass die gesamte Kommunikation zwischen dem Server und dem Client verschlüsselt ist.
Die meisten Menschen gehen davon aus, dass die Verwendung von SSH komplex ist und dass es nicht leicht ist, sich das Wissen darüber anzueignen, wie es funktioniert, aber es ist einfacher als Sie denken. Jetzt haben Sie ein grundlegendes Verständnis von SSH, wie es funktioniert, welche Sicherheitsaspekte dahinter stehen und warum es eine wichtige Rolle bei der Kommunikation spielt.
Als nächstes erkunden Sie einige der Ressourcen, um Sysadmin zu werden.