SSH

Was ist SSH?

SSH steht für „Secure Shell“ und bezeichnet sowohl ein Netzwerkprotokoll als auch das dahinter stehende Programm um eine sichere, verschlüsselte Verbindung zwischen 2 entfernten Computern herzustellen.

SSH ist aktuell der Standard um eine Terminal-Verbindung zu einem anderen Computer zu erhalten.

Was sind die Grundvoraussetzungen für eine SSH-Verbindung?

Die erste Voraussetzung ist ein Sever, der den „SSH-Daemon“ (kurz sshd) installiert und aktiviert hat um auf diesen eine SSH-Session per Ferne herzustellen.

Die zweite Voraussetzung ist ein Client, der je nach Betriebssystem entweder schon vorinstalliert ist oder nachinstalliert werden muss.
MacOS und Linux haben es meistens vorinstalliert, Windows benötigt z.B. Putty

Die dritte Voraussetzung ist ein Netzwerk, dass die 2 Computer miteinander verbindet. Ob diese Verbindung über ein lokales Netzwerk am LAN geschieht oder über das globale Internet ist hier egal.

Wie stelle ich eine SSH-Verbindung her?

Wir gehen bei folgendem Beispiel von diesem Netzwerk aus:

Server: 192.168.0.1/24
Client: 192.168.0.2/24

Nun benötigen wir den Benutzernamen und das Passwort des Server zu dem wir eine Verbindung herstellen wollen.

Benutzername: kevin
Passwort: ********

Wenn wir jetzt von einem Linux oder MacOS Client ausgehen können wir im Terminal folgenden Befehl eingeben:

ssh kevin@192.168.0.1

Das heist der Befehl baut sich wie folgt zusammen:

ssh <username>@<host>

Danach erscheint eine Aufforderung für die Passwort-Eingabe. Hier bitte nicht schrecken – die visuelle Ausgabe des Passworts wird nicht angezeigt jedoch „merkt“ sich das Programm schon was über die Tastatur eingegeben wurde.

Wenn das Passwort richtig eingegeben wurde erhält man ein „fertiges“ Terminal des Servers.

Alternative für Authentifizierung – Public-Key-Auth

Wie wir alle wissen ist eine Authentifizierung über Benutzername und Passwort nicht wirklich „sicher“ da diese Daten recht einfach gestohlen, mitgehört, abgeschaut oder (auf welche Art und Weise auch immer) veröffentlicht oder verteilt wird.

Eine gute Alternative dafür ist die „Public-Key Authentication“.

Prinzip dahinter ist folgendes:

Der Client erzeugt ein Schlüsselpaar – einen „Public“ und einen „Private“ Key. Wie zu vermuten bleibt der Private-Key am Client und MUSS geheim gehalten werden. Der Public-Key wird am Server eingetragen um gewissen Benutzern das Anmelden rein über diese Methode zu erlauben.

Erstellen des Schlüsselpaars (Linux und MacOS)

ssh-keygen -t rsa

Nach der Eingabe des Befehls wird nur nachgefragt wo das Schlüsselpaar gespeichert werden soll und ob der Private-Key ein Passwort haben. Normalerweise sollte man aber den Standard-Speicherort belassen (~/.ssh/).

In diesem Ordner befinden sich nun 2 Dateien:

id_rsaPrivate-Key
id_rsa.pubPublic-Key

Wenn ein Passwort auf dem Private-Key gesetzt ist kann dieser nicht ohne dieses Passwort verwendet werden.

Welche Cryptography hinter der Verschlüsselung der Public-Private-Key-Paare verwendet wird kann beim erstellen des Schlüsselpaars definiert werden.

Bekannte Methoden hierfür sind:

  • RSA
  • ECDSA
  • ed25519

Je nachdem wie up2date oder veraltet der Server oder der Client ist werden nur neuere oder ältere Methoden unterstützt.

Wie füge ich einen Public-Key zu meinem Server hinzu?

Wie oben beschrieben kann der Inhalt des Public-Keys unter ~/.ssh/id_rsa.pub betrachtet werden.

Alternativ kann sonst immer der folgende Befehl ausgeführt wurden um den Inhalt der Datei in die Zwischenablage zu kopieren (nur Linux und MacOS):

pbcopy < ~/.ssh/id_rsa.pub

Nun müssen wir uns auf den Server verbinden und dort im Ordner ~/.ssh/ eine Datei erstellen mit dem Namen „authorized_keys„.

Pro Zeile wird dort dann ein Public-Key eingetragen, der auf diesen User ohne Passwort sich verbinden darf.

Beispiel

Am Client (192.168.0.2) haben wir das Schlüsselpaar in ~/.ssh/ erstellt und den Public Key kopiert.

Dann verbinden wir uns auf den Server mit ssh kevin@192.168.0.2 und dem Passwort.

Danach öffnen oder erstellen wir mit unserem Text-Editor unseres Vertrauens (z.B. Vim) die Datei ~/.ssh/authorized_keys und tragen dort unseren Public Key ein.

Wenn alles richtig durchgeführt wurde (und die SSH-Daemon Config des Servers nicht etwas weiteres noch voraussetzt) sollte der Login über SSH vom Client aus nun OHNE PASSWORT (wenn der Private-Key ohne Passwort erstellt wurde) funktionieren.

Weiters kann über den „Verbose-Output“ vom ssh Befehl überprüft werden ob der Public-Key erfolgreich verwendet wird.

ssh -v kevin@192.168.0.2

Source: https://de.wikipedia.org/wiki/Secure_Shell

Share this post

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

The reCAPTCHA verification period has expired. Please reload the page.