Synology NAS: TOTP-Code wird nicht (mehr) akzeptiert

Vorletzte Nacht wollte ich mich seit Langem wieder einmal in mein Synology NAS einloggen.

Das Administrator-Konto habe ich mit einem Time-based One-Time Password (TOTP) geschützt.

Leider wurde der von 1Password gelieferte Code irgendwie nicht akzeptiert. Die Fehlermeldung habe ich mir leider nicht notiert, doch eine Google-Suche leitete mich zu folgendem Artikel:

Why is my mobile device’s time different from my Synology NAS?

Zum Glück hatte ich auf dem NAS den Zugang zu einem Mail-Server konfiguriert und dem Administratorenkonto eine Email-Adresse hinterlegt. Deshalb wurde mir auf dem Login-Screen neben der Fehlermeldung die Möglichkeit angeboten, einen Einmal-Code emailen zu lassen. Das tat ich auch, und konnte mich mit dem Code einloggen.

In den Benutzerkonto-Einstellungen starte ich dann den Versuch, die Zwei-Faktor-Authentifizierung zu deaktivieren, und erneut einzurichten.

1Password auf meinem Mac erkannte den QR-Code leider nicht (das Problem besteht seit dem Upgrade auf 1Password 8, und auf macOS Sequoia: höchst enttäuschend, so ein nützliches Feature!), weshalb ich kurzerhand 1Password auf meinem iPhone verwendete. Die Kamera erkannte den QR-Code und fügte den Seed dem Login-Eintrag hinzu. Doch als ich den Code zur Bestätigung in das dafür vorgesehene Formular eintrug und absendete, erhielt ich folgende Fehlermeldung:

Code authentication failed. Please make sure the verification code you entered is correct or try synchronizing the system time of your mobile device and DSM. Refer to this article for details.

Was zum Teufel?!

Doch der aufmerksame Leser wird die Antwort vermuten: Für einmal war die Fehlermeldung wirklich hilfreich, und akkurat: Die Zeit des NAS ging eine halbe bis eine Minute hinter der tatsächlichen Uhrzeit nach. Für TOTP „tödlich“.

Dies sieht man im Control Panel unter Regional Options. Dort gibt es auch die Möglichkeit, einen NTP-Server zu erfassen. Der war in meinem Fall tatsächlich erfasst und lautete auf time.google.com — doch im Status-Feld unterhalt stand nicht „Normal“ in grüner Schrift.

Ich erfasste deshalb die IP eines lokalen Linux-Servers, auf welchem NTP läuft, speicherte die Einstellungen, und forcierte die Aktualisierung der Uhrzeit. Danach klappte das generieren und verifizieren des TOTP-Codes problemlos.

Gleich anschliessend passte ich die NTP-Einstellungen auf allen Synology NAS in meinem Fuhrpark an, um dieses Problem künftig zu vermeiden. Jetzt muss ich einfach nur sicherstellen, dass die lokalen NTP-Server stetig funktionieren.