WMP Sites

Sichern von SSH-Zugriff mit Authorized Keys

Lukas Fuchs vor 2 Jahren DevOps & Deployment 3 Min. Lesezeit

Was sind SSH Authorized Keys und warum sind sie wichtig?

SSH (Secure Shell) ist ein Protokoll, das die sichere Kommunikation über ungesicherte Netzwerke ermöglicht. Authorized Keys sind eine wichtige Sicherheitsmaßnahme für SSH, die dir ermöglicht, zu kontrollieren, wer auf deine Server zugreifen darf.

Was sind Authorized Keys?

Authorized Keys sind Dateien, die öffentliche SSH-Schlüssel enthalten. Wenn du dich mit SSH bei einem Server anmeldest, sendet dein Client seinen öffentlichen Schlüssel an den Server. Der Server überprüft dann, ob der öffentliche Schlüssel in der Datei "authorized_keys" auf dem Server vorhanden ist. Wenn ja, gewährt der Server dir Zugang, ohne dass du ein Passwort eingeben musst.

Warum sind Authorized Keys wichtig?

Authorized Keys bieten mehrere Vorteile für die Sicherheit:

  • Bequemlichkeit: Du musst dich nicht jedes Mal mit einem Passwort anmelden.
  • Erhöhte Sicherheit: Schlüsselbasierte Authentifizierung ist sicherer als passwortbasierte Authentifizierung, da Schlüssel nicht erraten oder gestohlen werden können.
  • Vereinfachtes Schlüsselmanagement: Du kannst mehrere Schlüssel auf verschiedenen Geräten verwenden und sie zentral über eine Datei "authorized_keys" verwalten.
  • Skalierbarkeit: Authorized Keys eignen sich gut für Umgebungen mit vielen Servern und Benutzern, da sie eine einfache Verwaltung von Zugriffsberechtigungen ermöglichen.
  • Automatisierte Prozesse: Schlüsselbasierte Authentifizierung kann in automatisierte Prozesse integriert werden, ohne dass Passwörter in Skripten oder Konfigurationsdateien gespeichert werden müssen.

Verschiedene Methoden zum Hinzufügen von Authorized Keys

Es gibt mehrere Methoden, um Authorized Keys zu deinem Server hinzuzufügen, jede mit ihren eigenen Vor- und Nachteilen.

SSH-Kopie

Eine der einfachsten Möglichkeiten, Authorized Keys hinzuzufügen, ist die Verwendung des SSH-Kopierbefehls. Dies funktioniert am besten, wenn der Client und der Server über das gleiche System verfügen, z. B. Linux oder macOS. Führe folgende Schritte aus:

  1. Erstelle auf dem Client einen öffentlichen SSH-Schlüssel: ssh-keygen -t rsa
  2. Kopiere den öffentlichen Schlüssel auf den Server: ssh-copy-id <user>@<server_ip>
  3. Gib das Kennwort des Benutzers ein, wenn du dazu aufgefordert wirst.
  4. Der öffentliche Schlüssel wird automatisch der Datei authorized_keys auf dem Server hinzugefügt.

Manuelles Hinzufügen

Du kannst Authorized Keys auch manuell zur Datei authorized_keys auf dem Server hinzufügen. Gehe wie folgt vor:

  1. Öffne die Datei authorized_keys auf dem Server: sudo nano /etc/ssh/authorized_keys
  2. Füge den öffentlichen SSH-Schlüssel an das Ende der Datei an, entweder durch Kopieren und Einfügen oder durch Weiterleitung der Ausgabe von ssh-copy-id.
  3. Speichere und schließe die Datei.

SSH-Agenten

SSH-Agenten sind Tools, die deinen privaten SSH-Schlüssel im Speicher verwalten. Dies ermöglicht es dir, dich ohne Kennworteingabe bei Servern anzumelden, wenn du den Agenten verwendest. Es gibt verschiedene SSH-Agenten, wie z. B.:

  • ssh-agent (Standard-Agent unter Linux und macOS)
  • Pageant (Teil von PuTTY)
  • SSH-Agent (Teil von Git for Windows)

Um einen SSH-Agenten zu verwenden, musst du zunächst einen privaten SSH-Schlüssel erstellen und diesem zum Agenten hinzufügen. Anschließend kannst du dich bei Servern anmelden, indem du die Identität angibst, die dem Schlüssel zugeordnet ist.

Cloud-Dienste

Wenn du deine SSH-Schlüssel in einem Cloud-Dienst wie Amazon EC2 oder Google Cloud Platform speicherst, kannst du den Dienst so konfigurieren, dass er sie automatisch zu neuen Instanzen hinzufügt, die du erstellst. Dies spart dir Zeit und Mühe bei der manuellen Verwaltung der Keys.

Verwendung von SSH-Agenten zum Verwalten von Keys

Wenn du regelmäßig auf mehrere Server mit SSH zugreifst, kann die Verwaltung einzelner Schlüssel auf jedem Client zeitaufwändig werden. SSH-Agenten lösen dieses Problem, indem sie deine privaten Keys sicher speichern und sie bei Bedarf an SSH weitergeben.

Was ist ein SSH-Agent?

Ein SSH-Agent ist eine Software, die private SSH-Keys im Speicher verwaltet. Sobald ein Key zum Agenten hinzugefügt wurde, kann er von allen SSH-Sitzungen verwendet werden, die den Agenten nutzen. SSH-Agenten verschlüsseln die Keys im Arbeitsspeicher und entsperren sie nur, wenn sie von einem autorisierten Prozess angefordert werden.

Wie verwende ich einen SSH-Agenten?

Um einen SSH-Agenten zu verwenden, musst du ihn zuerst auf deinem Client-System installieren. Unter Linux und macOS kannst du hierfür die folgenden Befehle verwenden:

# Linux
sudo apt install ssh-agent

# macOS
brew install ssh-agent

Starte anschließend den Agenten:

ssh-agent -s

Deinen Schlüssel zum Agenten hinzufügen

Füge deine privaten Keys dem Agenten mit dem ssh-add-Befehl hinzu:

ssh-add ~/.ssh/id_rsa

Wenn du zur Eingabe einer Passphrase aufgefordert wirst, gib die Passphrase für den Key ein.

SSH-Agent-Flags

Der ssh-add-Befehl unterstützt verschiedene Flags:

  • -D: Deaktiviert den Agenten.
  • -l: Listet die zum Agenten hinzugefügten Keys auf.
  • -t max_lifetime: Legt die maximale Lebensdauer (in Sekunden) für den Key fest.

Integration mit SSH

Um einen SSH-Agenten mit SSH zu verwenden, musst du ihn in deiner SSH-Konfigurationsdatei (~/.ssh/config) konfigurieren:

Host *
  UseKeychain yes

Vorteile von SSH-Agenten

  • Bequeme Key-Verwaltung: SSH-Agenten ermöglichen den Zugriff auf mehrere Server mit nur einem privaten Key.
  • Erhöhte Sicherheit: Agenten verschlüsseln Keys im Arbeitsspeicher und schützen sie vor Diebstahl.
  • Vereinfachte Authentifizierung: Sobald ein Key zum Agenten hinzugefügt wurde, musst du die Passphrase nicht mehr bei jedem SSH-Login eingeben.

Alternativen zu SSH-Agenten

Wenn du keine SSH-Agenten verwenden möchtest, kannst du deine Keys auch in einer SSH-Konfigurationsdatei speichern oder einen SSH-Schlüsselbund verwenden. Diese Optionen sind jedoch weniger sicher und weniger bequem als SSH-Agenten.

Fehlerbehebung bei Problemen mit Authorized Keys

Sollte der SSH-Zugriff mit Authorized Keys nicht funktionieren, befolge diese Schritte zur Fehlerbehebung:

Überprüfe Berechtigungen

  • Stelle sicher, dass die Datei authorized_keys die Berechtigungen 600 hat, d. h. nur der Besitzer kann lesen und schreiben.
  • Überprüfe, ob die Datei im Verzeichnis .ssh des Benutzerhome-Verzeichnisses abgelegt ist.

Überprüfe Syntax

  • Überprüfe, ob die Schlüssel im richtigen SSH-Key-Format vorliegen (z. B. OpenSSH).
  • Stelle sicher, dass es keine ungültigen Zeichen oder Leerzeilen im Schlüssel gibt.

Überprüfe den Fingerabdruck

  • Vergleiche den Fingerabdruck des Schlüssels im Terminal mit dem Eintrag in der Datei authorized_keys (ssh-keygen -l -f ~/.ssh/id_rsa).

Überprüfe die Umgebung

  • Stelle sicher, dass die SSH-Konfiguration auf dem Client und dem Server korrekt ist, insbesondere die AuthorizedKeysFile- und HostKeyAlgorithms-Einstellungen.
  • Prüfe, ob Firewalls oder Proxy-Server den SSH-Verkehr blockieren.

Überprüfe den SSH-Agenten

  • Wenn du einen SSH-Agenten verwendest, überprüfe, ob er korrekt konfiguriert und der Schlüssel hinzugefügt wurde.
  • Starte den Agenten neu oder versuche es ohne Agenten.

Überprüfe die Protokolle

  • Überprüfe die SSH-Protokolle auf dem Server (z. B. /var/log/auth.log) auf Fehlermeldungen oder ungewöhnliche Aktivitäten.

Sperre verdächtige Schlüssel

  • Falls du verdächtige Schlüssel bemerkst, entferne diese aus der Datei authorized_keys und sperre den entsprechenden Benutzer oder die IP-Adresse.
  • Ziehe in Erwägung, ein Tool wie Fail2ban zu verwenden, um Brute-Force-Angriffe zu erkennen und zu blockieren.

Best Practices für die Sicherheit von Authorized Keys

Die ordnungsgemäße Verwendung von Authorized Keys ist entscheidend für die Aufrechterhaltung eines sicheren SSH-Zugriffs. Hier sind einige Best Practices, die du befolgen solltest:

Halte deine Schlüssel geheim

  • Verwahre deine privaten SSH-Schlüssel sicher und gib sie niemals an Dritte weiter.
  • Erwäge die Verwendung von Passphrasen zum Verschlüsseln deiner privaten Schlüssel, um zusätzlichen Schutz zu bieten.

Begrenze den Zugriff auf Schlüssel

  • Erstelle separate Schlüsselpaare für verschiedene Zwecke und Benutzer.
  • Beschränke den Zugriff auf Authorized Keys auf die unbedingt erforderlichen Personen.
  • Lösche die Zugriffsrechte von Benutzern, die keinen Zugriff mehr benötigen.

Überprüfe deine Schlüssel regelmäßig

  • Überprüfe deine Authorized Keys-Dateien regelmäßig auf nicht autorisierte Einträge.
  • Verwende Tools wie whois oder nslookup, um die Herkunft neuer Schlüssel zu validieren.
  • Ersetze kompromittierte Schlüssel unverzüglich.

Verwende SSH-Zertifikate

  • Erwäge die Verwendung von SSH-Zertifikaten anstelle von Schlüsseln für eine erhöhte Sicherheit.
  • Zertifikate bieten eine zusätzliche Authentifizierungsschicht und können widerrufen werden, wenn sie kompromittiert werden.

Implementiere SSH-Agenten

  • Verwende SSH-Agenten, um deine Schlüssel sicher zu speichern und zu verwalten.
  • Agenten verhindern, dass du Passwörter oder Schlüssel beim Herstellen einer SSH-Verbindung manuell eingeben musst.

Andere Tipps zur Sicherheit

  • Aktiviere Zwei-Faktor-Authentifizierung für SSH, um eine zusätzliche Schutzebene hinzuzufügen.
  • Überwache deine SSH-Protokolle auf verdächtige Aktivitäten und greife rechtzeitig ein.
  • Implementiere Tools wie Fail2ban oder DenyHosts, um Brute-Force-Angriffe zu verhindern.
  • Erwäge die Verwendung von SSH-Bastionen oder Jump-Servern, um eine zusätzliche Schutzschicht bereitzustellen.

Alternativen zu Authorized Keys

Trotz der Vielseitigkeit von Authorized Keys gibt es alternative Methoden zur Sicherung von SSH-Zugriff, die in bestimmten Szenarien vorteilhafter sein können.

Single Sign-On (SSO)-Lösungen

SSO-Lösungen ermöglichen es dir, dich bei mehreren Anwendungen und Systemen mit einem einzigen Satz Anmeldeinformationen anzumelden. Statt Authorized Keys zu verwenden, können SSO-Anbieter wie Okta oder Auth0 deinen Zugriff auf Server verwalten. Dies bietet eine zentralisierte Kontrolle und vereinfacht die Zugriffsberechtigungen.

Zertifikatbasierte Authentifizierung

Anstatt auf Schlüsselpaare zu setzen, kannst du auch Zertifikatbasierte Authentifizierung nutzen. Hierbei wird ein öffentliches Zertifikat auf dem Server gespeichert und das entsprechende private Zertifikat auf dem Clientgerät. Diese Methode eignet sich besonders für Umgebungen mit vielen Servern und Clients.

PAM (Pluggable Authentication Module)

PAM bietet einen modularen Authentifizierungsrahmen, mit dem du verschiedene Authentifizierungsmethoden konfigurieren kannst. Statt Authorized Keys zu verwenden, kannst du PAM-Module wie PAM LDAP oder PAM Google Authenticator integrieren, um Authentifizierungen über LDAP-Verzeichnisse oder Google Authenticator-Codes zu ermöglichen.

SSH-Agenten

SSH-Agenten wie ssh-agent oder Pageant verwalten private SSH-Schlüssel in einem verschlüsselten Speicher. Dies ermöglicht es dir, dich auf mehreren Servern zu authentifizieren, ohne wiederholt nach deinen privaten Schlüsseln gefragt zu werden. SSH-Agenten bieten eine bequeme Möglichkeit, den Zugriff zu zentralisieren und die Eingabe von Passwörtern zu vermeiden.

Weitere Überlegungen

Neben diesen Alternativen gibt es weitere Faktoren, die du beachten solltest:

  • Kompatibilität: Stell sicher, dass die gewählte alternative Methode mit deinem SSH-Client und -Server kompatibel ist.
  • Sicherheit: Bewerte die Sicherheitsmaßnahmen der alternativen Methode sorgfältig und wähle diejenige, die die beste Schutzstufe bietet.
  • Bereitstellung und Verwaltung: Überlege, wie einfach die Bereitstellung und Verwaltung der alternativen Methode ist, insbesondere wenn du mehrere Server und Clients verwaltest.

Weitere Beiträge

Folge uns

Neue Beiträge

Frontend

HTML PDF Viewer: Anzeige von PDF-Dateien im Web einfach umsetzen

AUTOR • Jun 17, 2026
Frontend

Erstellen eines scrollbaren Div: So klappt’s ohne Frust

AUTOR • Jun 17, 2026
Frontend

HTML Code in Webseiten einfügen: Schritt-für-Schritt-Anleitung für saubere Implementierung

AUTOR • Jun 17, 2026
Frontend

HTML Checkbox onchange: Interaktive Webformulare erstellen, die wirklich reagieren

AUTOR • Jun 17, 2026
DevOps & Deployment

Linux Terminal Shortcuts: Meisterhafte Navigation für erhöhte Produktivität

AUTOR • Jun 17, 2026
DevOps & Deployment

MSI Afterburner für Linux: Leistungssteigerung deiner Grafikkarte ohne Umwege

AUTOR • Jun 17, 2026
DevOps & Deployment

Entdecken Sie die cloudbasierte Freiheit mit Cumulus Linux: Der pragmatische Guide für moderne Netzwerke

AUTOR • Jun 17, 2026
DevOps & Deployment

Linux PDF Viewer Vergleich: Die besten Optionen für reibungslose Dokumentenverarbeitung

AUTOR • Jun 17, 2026
Frameworks & Libraries

OpenOffice Seitenzahlen einfügen: So klappt es in wenigen Minuten

AUTOR • Jun 17, 2026
Frameworks & Libraries

Outlook Nachrichtenrückruf funktioniert nicht: Ursachen, Lösungen und was wirklich hilft

AUTOR • Jun 17, 2026
Frontend

WC Symbole: Warum sie in öffentlichen Toiletten und darüber hinaus unverzichtbar sind

AUTOR • Jun 17, 2026
Frontend

HTML Text neben Bild: Vereinfachte Darstellung von Bildern auf Webseiten, die sofort besser wirkt

AUTOR • Jun 17, 2026
API & Webservices

HTML Tags in PDF: So wandelst du HTML sauber in PDF um und vermeidest teure Fehler

AUTOR • Jun 17, 2026
DevOps & Deployment

playonlinux windows spiele unter linux ausfuehren: So klappt es wirklich

AUTOR • Jun 17, 2026
DevOps & Deployment

Linux Temperaturüberwachung: So überwachen Sie die Temperatur Ihres Systems effektiv

AUTOR • Jun 17, 2026
DevOps & Deployment

IP Scanner unter Linux: Zuverlässige Tools für Netzwerkdiscovery im Praxischeck

AUTOR • Jun 17, 2026
Datenbanken

Effektive Datenkomprimierung mit dem GNU tar Kommando: Dateien klein, Sicherungen schnell

AUTOR • Jun 17, 2026
Frontend

Das Netzwerk-Symbol: Ein Leitfaden zur Verwendung und Bedeutung im Alltag, UI und Marketing

AUTOR • Jun 17, 2026
Frontend

SVG Code in Bilder konvertieren: Schritt-für-Schritt-Leitfaden für schnelle, saubere Ergebnisse

AUTOR • Jun 17, 2026
Frontend

CSS list-style: Aufzählungszeichen und nummerierte Listen gezielt anpassen

AUTOR • Jun 17, 2026

Beliebte Beiträge

DevOps & Deployment

Privilege Escalation unter Linux: Techniken und Gegenmaßnahmen

AUTOR • May 06, 2024
DevOps & Deployment

Vergleich von Verzeichnissen in Linux: Befehle und Best Practices für 'diff'

AUTOR • May 06, 2024
DevOps & Deployment

Verzeichnis in Linux anzeigen: Befehle und Verwendung

AUTOR • May 06, 2024
DevOps & Deployment

Linux auf dem iPad installieren: Schritt-für-Schritt-Anleitung

AUTOR • Apr 09, 2026
DevOps & Deployment

Fernzugriff auf Windows-Computer von Linux-Geräten: Eine umfassende Anleitung

AUTOR • May 06, 2024
DevOps & Deployment

Linux Mint: Kernel-Aktualisierung und deren Wichtigkeit

AUTOR • May 06, 2024
DevOps & Deployment

Discord auf Linux: Einrichten und Fehlerbehebung

AUTOR • May 06, 2024
Frontend

Mahjong Titans: Das klassische Spiel für Denksportler

AUTOR • Apr 23, 2024
DevOps & Deployment

Wie Du das ASUS BIOS Zurücksetzen kannst: Eine Schritt-für-Schritt-Anleitung

AUTOR • Jun 24, 2025
Frontend

Word unterschiedliche Seitenzahlen - Detaillierte Anleitung und praktische Tipps

AUTOR • Sep 10, 2024
Frontend

Länderkennzeichen RSK: Bedeutung und Herkunft

AUTOR • Apr 07, 2025
DevOps & Deployment

Entfessle die Leichtigkeit: Minimalistische Linux-Distributionen für ein atemberaubendes Computing-Erlebnis

AUTOR • May 06, 2024
DevOps & Deployment

Linux-Download für 64-Bit-Systeme: Dein deutschsprachiger Guide

AUTOR • May 06, 2024
DevOps & Deployment

Der ultimative Guide zu Linux Window Managern

AUTOR • May 06, 2024
DevOps & Deployment

Sichern von SSH-Zugriff mit Authorized Keys

AUTOR • May 06, 2024
Frontend

HTML Platzhalter: So fügen Sie dynamische Inhalte in Ihre Website ein

AUTOR • Apr 24, 2024
Frontend

PNG in HTML einbetten: Eine Schritt-für-Schritt-Anleitung

AUTOR • Apr 24, 2024
Frontend

Gesundheits-Icons: Visuelle Symbole für Wohlbefinden und Sicherheit

AUTOR • May 09, 2024
DevOps & Deployment

Linux Hardening: Sichere dein System vor Bedrohungen

AUTOR • May 06, 2024
DevOps & Deployment

DNS-Lookup unter Linux: Die umfassende Anleitung

AUTOR • May 06, 2024