In letzter Zeit gab es Berichte über Probleme bei der Anmeldung von neu registrierten Benutzern bei Verwendung von SSH. Der SysAdmin registriert Alice und lässt sie dann versuchen, sich über SSH anzumelden. Alice meldet einen Authentifizierungsfehler.
Die syserr_log-Meldungen scheinen darauf hinzuweisen, dass Alice nicht registriert ist.
05:04:02 Prozess 1111812D, root.root (sshd), erstellt.
05:04:02 root (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]: Ungültiger Benutzer alice
+ von 127.0.0.1
05:04:02 root (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]: input_userauth_req
+uest: Ungültiger Benutzer alice
05:04:02 root (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]: Failed none for in
+valid user alice von 127.0.0.1 port 54869 ssh2
05:04:06 root (sshd) : [AUTH] [ERR] sshd [PID=0x1111812D]: Fehler: Could not ge
+t shadow information for NOUSER
05:04:06 root (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]: Failed password fo
+r ungültigen Benutzer alice von 127.0.0.1 Port 54869 ssh2
|
Wenn Alice jedoch einen Telnet-Client anstelle eines SSH-Clients verwendet, kann sie sich ohne Probleme anmelden.
05:04:23 Prozess 1111812E, PreLogin.System (Voranmeldung), erstellt.
05:04:38 Prozess 1111812E auf alice.CAC (Anmeldung) umgeschaltet.
|
Wenn Alice nicht sofort nach der Registrierung versucht, sich anzumelden, sondern ein paar Minuten wartet, kann sie sich problemlos anmelden.
05:12:51 Prozess 11118130, root.root (sshd), erstellt.
05:12:55 root (sshd) : [AUTH] [INFO] sshd [PID=0x11118130]: Akzeptiertes Passwort
+für alice von 127.0.0.1 port 54909 ssh2
05:12:55 Prozess 11118131, root.root (sshd), erstellt.
05:12:55 Prozess 11118131 umgeschaltet auf alice.CAC (Anmeldung).
|
Das wirklich Frustrierende ist, dass manchmal der erste neu registrierte Benutzer keine Probleme hat, sich mit SSH zu authentifizieren, aber ein zweiter schon.
Was ist also los?
Es gibt gewisse Probleme damit, dass POSIX-Programme wie SSH direkt auf die Registrierungsdatenbank verweisen. Stattdessen werden ihre Authentifizierungsaufrufe durch den Prozess posix_regdb_server bedient. Der Prozess posix_regdb_server verwaltet eine Kopie der Registrierungsdatenbank, auf die er verweist, um festzustellen, ob ein Benutzer gültig ist. Jedes Mal, wenn der posix_regdb_server eine Benutzer-ID nachschlägt, vergleicht er die aktuelle Zeit mit der Zeit, zu der er die Registrierungsdatenbank zuletzt gelesen hat, und wenn diese Zeit mehr als 5 Minuten in der Vergangenheit liegt, liest er die Datenbank erneut. Es ist also möglich, dass ein neu registrierter Benutzer bis zu 5 Minuten warten muss, bevor er sich über SSH anmelden kann.
Für das Szenario, in dem der erste neu registrierte Benutzer keine Probleme hat, der zweite aber schon, passiert folgendes: Der SysAdmin registriert Bob und lässt ihn versuchen, sich anzumelden. Da seit der letzten Authentifizierungsanfrage mehr als 5 Minuten vergangen sind, aktualisiert der posix_regdb_server seine Kopie der Datenbank, sieht Bob als gültigen Benutzer und kann sich anmelden. Nun registriert der SysAdmin Alice und lässt Alice versuchen, sich anzumelden. Da es jedoch erst ein oder zwei Minuten her ist, dass Bob sich angemeldet hat, aktualisiert der posix_regdb_service seine Kopie der Datenbank nicht und Alice wird nicht gefunden, sodass sie sich nicht anmelden kann.
Es gibt keine Möglichkeit, das 5-Minuten-Fenster zu ändern. Wenn Sie den Prozess posix_regdb_server anhalten, aktualisiert er seine Kopie der Registrierungsdatenbank, wenn er neu gestartet wird. Normalerweise wird er innerhalb einer Minute automatisch neu gestartet, aber es kann bis zu 2 Minuten dauern, so dass Sie die Dinge zwar beschleunigen, aber nicht wesentlich beschleunigen können.
Eine bessere Strategie ist es, alle neuen Benutzer gleichzeitig zu registrieren, bevor Sie einen von ihnen ausprobieren. Außerdem sollten Sie sie zu einem Zeitpunkt registrieren, zu dem niemand versucht, sich über SSH anzumelden. Auf diese Weise aktualisiert der posix_regdb_server seine Datenbank, wenn der erste neue Benutzer versucht, sich anzumelden, und erhält alle neuen Benutzer zur gleichen Zeit.
Natürlich kann es schwierig sein, einen Zeitpunkt zu finden, an dem niemand versucht, sich per SSH anzumelden. Daher ist es am besten, alle neuen Benutzer gleichzeitig zu registrieren und dann eine Tasse Kaffee zu trinken, bevor Sie ihnen sagen, dass sie sich anmelden können.