CMD Master
Zurück zum Blog
•Aktualisiert•Arnošt Havelka

SSH-Schlüsselrechte: Wann chmod 600 oder 700 richtig ist

Nutze chmod 600 für den privaten SSH-Schlüssel und 700 für sein Verzeichnis. Prüfe vor dem Verbindungsversuch Rechte und Eigentümer.

Interaktive Lektion starten
SSH-Schlüsselrechte: Wann chmod 600 oder 700 richtig ist

Verwende chmod 600 für einen privaten SSH-Schlüssel, wenn sein Eigentümer Lese- und Schreibzugriff benötigt. Schütze das Verzeichnis .ssh mit chmod 700, damit nur der Eigentümer seinen Inhalt auflisten, ändern oder es betreten kann. OpenSSH lehnt private Schlüssel ab, auf die andere Benutzer zugreifen können. Prüfe neben dem Modus auch die Eigentumsangaben, denn chmod kann keinen Schlüssel reparieren, der dem falschen Konto gehört. Die Lektion zu SSH-Berechtigungen bietet sichere Übungspfade, bevor du einen echten Schlüssel änderst.

Den privaten Schlüssel auf 600 setzen

Führe für einen privaten Ed25519-Schlüssel in deinem Home-Verzeichnis Folgendes aus:

chmod 600 "$HOME/.ssh/id_ed25519"

Der Modus 600 bedeutet:

BenutzergruppeBerechtigung
Eigentümerlesen + schreiben
Gruppekeine
anderekeine

SSH muss den privaten Schlüssel lesen können, andere Konten dürfen es jedoch nicht. Auch ein schreibgeschützter Modus wie 400 kann diese Zugriffsregel erfüllen, wenn der Eigentümer die Datei nicht ändern muss. 600 ist die übliche praktische Wahl für einen Schlüssel, den sein Eigentümer verwaltet.

Wende dieselbe Regel nicht ungeprüft auf den öffentlichen Schlüssel mit der Endung .pub an. Ein öffentlicher Schlüssel ist zum Teilen bestimmt und nicht geheim. Der private Schlüssel ist die sensible Datei, deren Verwendung OpenSSH verweigert, wenn andere darauf zugreifen können.

Das .ssh-Verzeichnis auf 700 setzen

Verzeichnisse benötigen die Ausführungsberechtigung, auch Suchrecht genannt, damit auf Einträge darin zugegriffen werden kann. Schütze das Verzeichnis mit:

chmod 700 "$HOME/.ssh"

Der Modus 700 gibt dem Eigentümer Lese-, Schreib- und Suchzugriff, während Gruppe und andere keinen Zugriff erhalten. 600 würde bei einem Verzeichnis das Suchbit entfernen. Dadurch könnte selbst der Eigentümer Dateien darin nicht öffnen, obwohl das Verzeichnis lesbar ist.

Vermeide rekursive Abkürzungen wie chmod -R 700 "$HOME/.ssh". Sie würden jeder normalen Datei Ausführungsrechte geben und beabsichtigte Unterschiede zwischen privaten Schlüsseln, öffentlichen Schlüsseln, Konfiguration und Known-Hosts-Dateien beseitigen. Ändere das Verzeichnis und den jeweiligen privaten Schlüssel getrennt.

Modus und Eigentümer gemeinsam prüfen

Untersuche nach der Änderung beide Pfade:

ls -ld "$HOME/.ssh"
ls -l "$HOME/.ssh/id_ed25519"

Das Verzeichnis sollte mit drwx------ beginnen, der private Schlüssel mit -rw-------. In beiden Zeilen sollte das Konto als Eigentümer erscheinen, das ssh ausführt.

Ist der Modus richtig, aber der Eigentümer falsch, untersuche zuerst die Ursache. Auf einem persönlichen System könnte die vorgesehene Korrektur so aussehen:

sudo chown "$USER" "$HOME/.ssh/id_ed25519"

Kopiere diesen Befehl nicht auf ein gemeinsam genutztes oder verwaltetes System, ohne dessen Kontenrichtlinien zu bestätigen. Die chown-Anleitung erklärt Eigentumsprüfungen und rekursive Risiken gesondert.

Wenn chmod scheinbar nicht hilft

Dateien auf von Windows eingebundenen, Netzwerk-, Container- oder anderweitig verwalteten Dateisystemen stellen Unix-Berechtigungsbits möglicherweise nicht wie üblich bereit. Meldet chmod Erfolg, aber ls -l zeigt keine sinnvolle Änderung, prüfe die Mount- und Dateisystemsemantik, statt den Zugriff wiederholt zu erweitern.

Mit ssh -v host kannst du untersuchen, welche Identitätsdatei SSH zu laden versucht. Veröffentliche ausführliche Protokolle aber nicht, ohne Hostnamen, Benutzernamen und Pfade zu entfernen. Ein korrekter Modus für einen Schlüssel hilft nicht, wenn SSH eine andere Datei lädt.

Das zugrunde liegende Oktalsystem erklärt der Artikel chmod-Zahlen erklärt. OpenSSH dokumentiert seine Zugriffsprüfung privater Schlüssel im ssh-Handbuch.

Quellen

Diese Dokumentationslinks liefern verlässliche Details zu den in diesem Artikel verwendeten Befehlen.

Nächstes

Bash Ripple-Effekt: Grep-Signal

Extrahieren Sie umsetzbare Protokollzeilen schnell mit grep-Filtern, bei denen die Groß-/Kleinschreibung nicht berücksichtigt wird.