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 Sichere Shell oder Sichere Socket Shell ist ein Netzwerkprotokoll, das uns den sicheren Zugriff auf und die Kommunikation mit entfernten Rechnern (meist entfernten Servern) ermöglicht.
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 austauschen 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, was für Fernschreibnetz 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 Zielrechner 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 eine bessere Sicherheit ändern)
Es verwendet eine Public-Key-Verschlüsselungstechnik zur Authentifizierung zwischen Client und Server. Darüber hinaus verwendet das Protokoll Stark 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 Remote-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
Die kennwortbasierte Authentifizierung ist die Standardmethode für die Authentifizierung von OpenSSH installierten Clients. Es ist die einfachste ssh-Authentifizierung, aber nicht die sicherste
Obwohl die Passwörter sicher an den Server gesendet werden, können moderne Brute-Force-Angriffe die Authentifizierung umgehen
Die schlü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 Gastgeber 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 an OverTheWire an. Das ist eine kostenlose Website für Kriegsspiele
Verbinden wir uns nun mit der Bandit-Herausforderung über ssh. Es handelt sich um 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, sind Sie erfolgreich beim entfernten Server angemeldet und Ihr Terminal sieht aus wie das obige Bild
Nun 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 Ausgang 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 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 Wissen über die Funktionsweise anzueignen, 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.