Lassen Sie zu, dass sich root nur mit schlüsselbasierter Authentifizierung über ssh anmeldet


49

Ich habe einige Zweifel an bestimmten SSH-Serverkonfigurationen /etc/ssh/sshd_config. Ich möchte das nächste Verhalten:

  1. Die Authentifizierung mit öffentlichem Schlüssel ist die einzige Möglichkeit, sich als Root zu authentifizieren (keine Kennwortauthentifizierung oder andere).
  2. Normale Benutzer können beide verwenden (Kennwort- und öffentliche Schlüsselauthentifizierung)

Wenn ich PasswordAuthentication nomeinen ersten Punkt setze ist der zweite aber nicht zufrieden. Gibt es eine Möglichkeit, PasswordAuthentication nonur für root einzustellen ?

Antworten:


78

Sie können dies mit der PermitRootLoginDirektive tun . Aus der sshd_configManpage:

Gibt an, ob sich root mit ssh (1) anmelden kann. Das Argument muss "Ja", "Ohne Passwort", "Nur erzwungene Befehle" oder "Nein" sein. Der Standardwert ist "Ja".

Wenn diese Option auf "ohne Passwort" gesetzt ist, ist die Passwortauthentifizierung für root deaktiviert.

Folgendes wird erreichen, was Sie wollen:

PasswordAuthentication yes
PermitRootLogin without-password

1
Ich habe dies unter Debian versucht und mit service ssh restartauf dem Server und dann auf dem Client überprüft. Ich habe versucht, eine Verbindung ohne meinen Schlüssel herzustellen ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no root@hostund konnte mich zwar nicht mit einem Passwort anmelden, aber mit einem Schlüssel für den Root-Benutzer.
Bastian

Ja, aber wenn Sie dies stattdessen einfach tun, können Sie sich mit dem Kennwort anmelden: ssh -o PreferredAuthentications=password root@hostnicht besonders sicheres imho
geoidesic 30.04.18

2
Im Jahr 2019 ist es "PermitRootLogin prohibit-password", das alte ohne Passwort ist ein veralteter Alias.
Vbraun

10

Mithilfe von MatchBlöcken können Sie einige Optionen für die Authentifizierung pro Benutzer oder Gruppe oder für die IP-Adresse oder den Hostnamen des Ursprungs der Verbindung konfigurieren.

PasswordAuthentication yes
PermitRootLogin yes

Match User root
PasswordAuthentication no

3
Ich habe es geschafft, mich von meinem SSH-Server auszusperren.
Richard Metzler

Dies scheint die beste Methode zu sein, wenn Sie nicht möchten, dass die Kennworteingabeaufforderung für root angezeigt wird.
Leo

Das hat mich auch ausgesperrt. Ich denke, es könnte in der falschen Reihenfolge sein ...
Gary

3

Ich habe einen noch restriktiveren Ansatz, um Root-Rechte auf meinem Server zu gewähren, was für die Paranoiden wie mich interessant sein könnte. Seien Sie vorsichtig, was Sie tun und in welcher Reihenfolge, da Sie sonst möglicherweise auf ein System stoßen, auf dem Sie keinen Root-Zugriff erhalten.

  • Erstellen Sie eine bestimmte Gruppe sugroup, deren Mitglieder als Root angemeldet werden dürfen und die nur die Schlüsselauthentifizierung für diese Gruppe zulassen, indem Sie die folgenden Zeilen am Ende von sshd_confid einfügen:

Match Group sugroup

PasswordAuthentication no

  • Geben Sie den Befehl auth required pam_wheel.so group=sugroupein /etc/pam.d/su. Möglicherweise ist es bereits vorhanden, und Sie müssen es nur auskommentieren. Dies verweigert allen Benutzern, die nicht Mitglied der sugroup sind, den Root-Zugriff
  • Wähle ein starkes root Passwort :)
  • Überprüfen Sie, ob Ihre neue Authentifizierungsmethode funktioniert, und zwar nur dann, wenn:
  • Verweigere die direkte Root-Anmeldung über ssh mit PermitRootLogin noin /etc/ssh/sshd_config.

Bei dieser Konfiguration ist es erforderlich, eine Schlüsselauthentifizierung und ein Kennwort zu verwenden, um root zu werden. Ich habe meinen Server so konfiguriert, da ich unabhängig von der Authentifizierungsmethode keinen direkten Root-Zugriff über ssh bevorzuge.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.