5 ssheinfach
kraeml edited this page 2023-10-02 06:55:21 +00:00

SSH vereinfacht

SSH Protkoll

Das SSH-Protokoll ermöglicht sichere Fernzugriffe auf Systeme. Hier ist eine vereinfachte Erläuterung, wie es funktioniert:

  1. Client sendet eine Verbindungsanfrage an den Server.
  2. Server antwortet und sendet seinen öffentlichen Schlüssel an den Client.
  3. Der Client überprüft den Schlüssel und sendet seine eigenen öffentlichen Schlüssel zurück an den Server (falls erforderlich).
  4. Der Server authentifiziert den Client anhand der bereitgestellten Schlüssel oder durch Passwort.
  5. Eine verschlüsselte Sitzung wird etabliert, und alle Daten werden verschlüsselt übertragen.

SSH verwendet Konfigurationsdateien auf beiden Seiten.

Auf der Client-Seite sind dies normalerweise:

  • ~/.ssh/config: Eine Konfigurationsdatei für SSH-Optionen pro Host.
  • ~/.ssh/known_hosts: Enthält die öffentlichen Schlüssel von Servern, die der Client bereits kontaktiert hat.

Auf der Server-Seite:

  • /etc/ssh/sshd_config: Die Hauptkonfigurationsdatei für den SSH-Server.
  • ~/.ssh/authorized_keys: Eine Datei, die die öffentlichen Schlüssel von Benutzern enthält, die sich am Server authentifizieren dürfen.

Diese Dateien helfen bei der Konfiguration und Sicherheit des SSH-Protokolls.

config

Die Datei ~/.ssh/config wird verwendet, um SSH-Konfigurationsoptionen für verschiedene Hosts festzulegen. Hier ist ein Beispiel für eine solche Konfiguration mit dem Host "foo", der IP-Adresse "10.0.3.110", dem Benutzernamen "ubuntu" und dem Passwort " ubuntu" (obwohl SSH normalerweise Schlüssel verwendet, nicht Passwörter):

Host foo
    HostName 10.0.3.110
    User ubuntu
    PasswordAuthentication yes
    PasswordAuthentication yes

Bitte beachten Sie, dass die Verwendung von Passwörtern in SSH-Konfigurationen aus Sicherheitsgründen nicht empfohlen wird. Stattdessen sollten Sie SSH-Schlüssel verwenden, um die Sicherheit Ihrer Verbindungen zu erhöhen.

Um SSH einen anderen Pfad zur Konfigurationsdatei als ~/.ssh/config mitzuteilen, können Sie das -F-Flag verwenden, gefolgt vom gewünschten Dateipfad. Zum Beispiel:

ssh -F /pfad/zur/anderen/config ~/.ssh/zielserver

Dadurch wird SSH angewiesen, die Konfiguration aus der angegebenen Datei zu laden, anstatt die Standardkonfiguration unter ~/.ssh/config zu verwenden.

known_hosts

Die Datei ~/.ssh/known_hosts enthält öffentliche Schlüssel von Hosts, zu denen du eine SSH-Verbindung hergestellt hast. Diese Schlüssel dienen dazu, die Identität der Hosts zu überprüfen, um Man-in-the-Middle-Angriffe zu verhindern. Die Datei enthält normalerweise Zeilen im Format " <Typ des Schlüssels> <Öffentlicher Schlüssel>". Du kannst sie mit einem Texteditor öffnen, um den Inhalt anzuzeigen.

In der ~/.ssh/known_hosts-Datei speichert OpenSSH Informationen über bekannte Hosts, zu denen eine SSH-Verbindung hergestellt wurde. Bei jeder ersten Verbindung zu einem neuen Host wird der öffentliche Schlüssel des Servers in diese Datei geschrieben. Bei zukünftigen Verbindungen prüft SSH dann diesen Schlüssel, um Man-in-the-Middle-Angriffe zu erkennen.

Standardmäßig werden die Hostnamen oder IP-Adressen in der known_hosts-Datei aus Datenschutzgründen gehasht, sodass sie nicht direkt lesbar sind. Dies dient dazu, Informationen über die Netzwerkstruktur und Verbindungsgewohnheiten des Benutzers zu verbergen.

Um die Hostnamen und IP-Adressen in known_hosts lesbar zu erstellen, können Sie folgende Schritte durchführen:

  1. Hashing deaktivieren: Bei der ersten Verbindung zu einem neuen Host können Sie das Hashing mit dem -o HashKnownHosts=no-Parameter deaktivieren:
ssh -o HashKnownHosts=no user@host
  1. Lesbares Format anzeigen: Wenn Ihre known_hosts-Datei bereits gehashte Einträge enthält und Sie diese entschlüsseln möchten, ist dies leider nicht direkt möglich, da das Hashing irreversibel ist. Es ist jedoch möglich, gehashte Einträge zu löschen und dann erneut eine Verbindung ohne Hashing herzustellen.

Es ist wichtig zu beachten, dass das Deaktivieren des Hashings ein potenzielles Datenschutzrisiko darstellen kann, insbesondere auf Mehrbenutzersystemen oder Systemen, auf die andere Zugriff haben könnten. Es ist immer eine Abwägung zwischen Sicherheit/Datenschutz und Benutzerfreundlichkeit.

Um einen anderen Pfad anzugeben, verwende die Option "-o UserKnownHostsFile=" in der SSH-Konfigurationsdatei oder den Befehl "ssh -o UserKnownHostsFile=".

authorized_keys

Die Datei ~/.ssh/authorized_keys enthält öffentliche SSH-Schlüssel, die es einem Benutzer ermöglichen, sich auf einem SSH-Server ohne Passwortanmeldung anzumelden. Hier ist ein Beispiel für den Eintrag in dieser Datei, wenn sich der Benutzer vagrant auf einem SSH-Server namens foo mit dem Benutzer ubuntu anmelden möchte:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCw6EKy... [öffentlicher Schlüssel] ... vagrant@lokaler-Rechner

Der öffentliche Schlüssel des Benutzers vagrant würde anstelle von [öffentlicher Schlüssel] in diesem Eintrag stehen. Dieser Eintrag erlaubt es dem Benutzer vagrant, sich auf dem Server foo als Benutzer ubuntu anzumelden, ohne ein Passwort eingeben zu müssen, wenn er denselben privaten Schlüssel auf seinem lokalen Rechner besitzt.

Die Datei ~/.ssh/authorized_keys auf einem SSH-Server enthält öffentliche SSH-Schlüssel, die es autorisierten Benutzern ermöglichen, sich ohne Passwortanfrage anzumelden. Wenn sich der Benutzer "vagrant" auf dem SSH-Server "foo" als Benutzer "ubuntu" anmelden möchte, müsste der öffentliche Schlüssel des Benutzers "vagrant" in die Datei ~/.ssh/authorized_keys des Benutzers "ubuntu" auf dem SSH-Server "foo" hinzugefügt werden.

Die Datei ~/.ssh/authorized_keys befindet sich normalerweise im Home-Verzeichnis des Benutzers "ubuntu" auf dem Host bzw. SSH-Server "foo". Sie wird dem Benutzer "ubuntu" zugeordnet, da die Datei in seinem Home-Verzeichnis liegt und die SSH-Verbindung im Kontext dieses Benutzers hergestellt wird.

sshd_config

Die Datei /etc/ssh/sshd_config ist die Konfigurationsdatei für den SSH-Server auf einem Linux-System. Sie enthält Einstellungen und Konfigurationsoptionen, die das Verhalten des SSH-Servers steuern. Dies umfasst Dinge wie Portnummern, Authentifizierungsmethoden, erlaubte Benutzer und Gruppen, Sicherheitseinstellungen und mehr. Durch Bearbeiten dieser Datei können Administratoren die Art und Weise, wie der SSH-Server funktioniert, anpassen und sicherstellen, dass er ihren Anforderungen entspricht. Beachten Sie jedoch, dass Änderungen an dieser Datei sorgfältig durchgeführt werden sollten, da falsche Konfigurationen die Sicherheit und Funktion des Servers beeinträchtigen können.