Startseite
» LINUX
»
So aktivieren Sie den Root-SSH-Login unter Linux mit SSH-Schlüsseln
So aktivieren Sie den Root-SSH-Login unter Linux mit SSH-Schlüsseln
authorized_keysAktivieren Sie die SSH-Anmeldung für Root mit einem öffentlichen Schlüssel, indem Sie diesen zur Umgebungsvariablen `/etc/sshd_config` von Root hinzufügen PermitRootLogin prohibit-password, die OpenSSH-Konfiguration überprüfen und den Dienst neu laden. Dadurch kann sich Root per Schlüssel anmelden, während die Authentifizierung per Passwort und Tastaturinteraktion blockiert wird. Die Definitionen der Optionen finden Sie im Handbuch zu `sshd_config` von OpenSSH.
Diese Terminalabbildung zeigt die Vertrauensabfrage; überprüfen Sie den tatsächlichen Host-Fingerabdruck über einen vertrauenswürdigen Kanal, bevor Sie ihn akzeptieren.
Direkter Root-Zugriff gewährt einem akzeptierten Schlüssel uneingeschränkte Kontrolle. Verwenden Sie ihn nur auf Systemen, die Sie selbst verwalten, und vorzugsweise hinter einem privaten Netzwerk oder einer Firewall. Melden Sie sich für Routinearbeiten als Benutzer mit einem Benutzernamen an und verwenden Sie die Root-Rechte sudo. Halten Sie Ihre aktuelle Sitzung offen und stellen Sie sicher, dass Sie einen alternativen Wiederherstellungspfad haben, bevor Sie die SSH-Einstellungen ändern.
Bevor Sie den SSH-Server bearbeiten
Stellen Sie eine Verbindung mit einem Konto her, das OpenSSH ausführen kann sudo, und vergewissern Sie sich, dass der OpenSSH-Server läuft.
Halten Sie ein Client-SSH-Schlüsselpaar bereit. Kopieren Sie den öffentlichen Schlüssel (normalerweise die Datei mit der Endung .ssh .pub); geben Sie niemals den privaten Schlüssel weiter.
Verwenden Sie kein Root-Passwort ausschließlich für schlüsselbasiertes SSH. Passwortschutz und Zugriff per öffentlichem Schlüssel sind separate Kontrollmechanismen, wobei die Richtlinien der Distribution die Anmeldung beeinflussen können. Im Benutzerverwaltungshandbuch von Ubuntu wird erläutert, dass das Sperren eines Passworts allein den bestehenden SSH-Schlüsselzugriff nicht deaktiviert.
Aktivieren Sie die schlüsselbasierte Root-SSH-Anmeldung.
1. Melden Sie sich als Ihr regulärer Administrator an.
Stellen Sie von einem Terminal auf Ihrem Client aus eine Verbindung mit dem Konto her, das bereits über sudo-Rechte verfügt:
ssh admin@server.example.com
Ersetzen Sie die Beispielwerte. Überprüfen Sie den neuen Host-Key-Fingerabdruck über einen vertrauenswürdigen Kanal, bevor Sie ihn akzeptieren.
2. Fügen Sie Ihren öffentlichen Schlüssel dem Root-Konto hinzu.
Erstellen Sie auf dem Server ein SSH-Verzeichnis für das Root-Benutzer mit eingeschränkten Berechtigungen und bearbeiten Sie anschließend die Liste der autorisierten Schlüssel:
Fügen Sie den vollständigen öffentlichen Schlüssel in eine Zeile ein und speichern Sie die Datei. Fügen Sie niemals den privaten Schlüssel ein und behalten Sie alle vorhandenen Einträge bei. Beschränken Sie anschließend die Besitzrechte und Berechtigungen:
Fügen Sie den vollständigen öffentlichen Schlüssel als eine Zeile in die authorized_keys-Datei des Root-Verzeichnisses ein; der hier gezeigte Kurzschlüssel ist nur ein visueller Platzhalter.
3. Legen Sie die Root-Anmelderichtlinie fest.
Öffnen Sie die Serverkonfiguration mit einem Editor, zum Beispiel:
sudoedit /etc/ssh/sshd_config
Suchen Sie die aktive PermitRootLoginDirektive und ändern Sie sie wie folgt:
PermitRootLogin prohibit-password
Dies ist sicherer als PermitRootLogin yesdie Methode, die Root-Passwörter zulässt. Fügen Sie keine doppelten Anweisungen hinzu: OpenSSH verwendet den ersten gefundenen Wert, und Distributionen laden möglicherweise IncludeDateien. Bearbeiten Sie die aktive Einstellung und lassen Sie nicht benötigte Authentifizierungsoptionen unverändert.
Die hervorgehobene Zeile steuert die Root-Authentifizierung; die anderen angezeigten Authentifizierungsoptionen sind separate Einstellungen und sollten Ihrer Richtlinie entsprechen.
4. Überprüfen Sie die Konfiguration, bevor Sie sie anwenden.
Zuerst auf Syntaxfehler prüfen:
sudo sshd -t
Keine Ausgabe bedeutet, dass die Syntaxprüfung erfolgreich war. Beheben Sie alle gemeldeten Fehler vor dem Neuladen. Überprüfen Sie den effektiven Wert mit:
sudo sshd -T | grep permitrootlogin
Bestätigen Sie die Ausgabe permitrootlogin prohibit-password. Falls nicht, überprüfen Sie die eingebundenen Dateien und die entsprechenden MatchBlöcke. Das SSHD-Handbuch definiert dies -tals Syntaxprüfung und -Tals Bericht über die effektive Konfiguration.
Führen Sie vor dem Anwenden der Änderungen den Befehl `sshd -t` aus und überprüfen Sie anschließend die effektive Root-Login-Einstellung.
5. Laden Sie den SSH-Dienst neu.
Verwenden Sie den Dienstnamen Ihrer Distribution. Ubuntu und Debian verwenden üblicherweise:
sudo systemctl reload ssh.service
Fedora, RHEL und viele andere Distributionen verwenden üblicherweise:
sudo systemctl reload sshd.service
Falls ein Neustart nicht unterstützt wird, verwenden Sie systemctl restartden passenden Dienstnamen und halten Sie Ihre ursprüngliche Sitzung geöffnet. Die OpenSSH-Anleitung von Ubuntu empfiehlt außerdem, sshd -tvor einem Neustart einen Befehl auszuführen.
Laden Sie den SSH-Daemon neu, nachdem die Konfiguration die Syntaxprüfung bestanden hat; die Dienstnamen variieren je nach Distribution.
6. Testen Sie den Root-Zugriff von einem zweiten Terminal aus.
Öffnen Sie ein separates Terminal auf dem Client und geben Sie den privaten Schlüssel an, der zu dem installierten öffentlichen Schlüssel passt:
ssh -i ~/.ssh/id_ed25519 root@server.example.com
Ersetzen Sie den Schlüsselpfad und den Hostnamen. Überprüfen Sie die Eingabeaufforderung für den Hostschlüssel und stellen Sie sicher, dass die Sitzung als Root geöffnet wird. Falls der Test fehlschlägt, beheben Sie das Problem in der ursprünglichen Sitzung und lassen Sie diese geöffnet, bis der Zugriff wiederhergestellt ist.
Testen Sie von einem neuen Client-Terminal aus mit dem passenden privaten Schlüssel, bevor Sie die Administratorsitzung schließen.
Fehlerbehebung bei verweigerter Root-Anmeldung
Prüfen Sie, ob Permission denied (publickey)der vollständige öffentliche Schlüssel vorhanden ist /root/.ssh/authorized_keysund der Client den zugehörigen privaten Schlüssel verwendet. Überprüfen Sie außerdem die Besitzverhältnisse und Berechtigungen.
Überprüfen Sie außerdem den effektiven PermitRootLoginWert, AllowUsersdie DenyUsersRegeln, die Serverprotokolle und die Anmelde-Shell des Root-Benutzers. Vermeiden Sie es, die Einstellung yesvorschnell zu ändern, da dies die zulässigen Authentifizierungsmethoden des Root-Benutzers erweitern kann.
Das SSH-Verzeichnis von Root sollte dem Benutzer root gehören, mit den Berechtigungen 700 für das Verzeichnis und 600 für authorized_keys.
Deaktivieren Sie die SSH-Anmeldung für Root-Benutzer, wenn Sie sie nicht mehr benötigen.
Um den direkten Root-SSH-Zugriff zu deaktivieren, ändern Sie die aktive Direktive wie folgt:
PermitRootLogin no
Starten sudo sshd -tund laden Sie den entsprechenden Dienst neu. Dadurch wird der direkte SSH-Zugriff für Root blockiert, während das Administratorkonto weiterhin verfügbar bleibt. Eine Passwortsperre allein verhindert möglicherweise nicht die Anmeldung mit dem öffentlichen Schlüssel von Root.
Setzen Sie PermitRootLogin auf „Nein“, validieren Sie die Daten und laden Sie die Seite neu. Die anderen angezeigten Authentifizierungsoptionen sind separat und für diese Änderung, die nur für Root-Benutzer gilt, nicht erforderlich.