Ubiguiti Unifi Controller kein Login mehr möglich

Aus Laub-Home Wiki

Falls es bei euch auch dazu kommt, das ihr euch nicht mehr am Ubiguiti Unifi Controller anmelden könnt, obwohl ihr 100% sicher seid das euer Benutzername und Passwort richtig sind und folgende Fehlermeldung beim Login kommt:

Login error
Invalid username and/or password.

Bei mir zeigte zudem die UI des USG (Unifi Secure Gateway) die folgende Meldung:

The UniFi Controller is currently unreachable.

und unter https://network.unifi.ui.com wurde der Cloud Key als offline angezeigt.

Auch ein Restore meiner Backup Dateien über die Cloud Key UI im Browser brachte keinen Erfolg.

Als ich ein wenig mir das Server Log des Unifi Controllers angeschaut habe, habe ich direkt einen Verdacht bekommen: Datenbank korrupt! Das Logfile bekommt ihr, wenn ihr euch auf den Cloud Key via SSH Verbindet unter /srv/unifi/logs hier liegen alle relevanten Logfiles.

less /srv/unifi/logs/server.log

Nach ein wenig Recherche bin ich darüber gestoßen, dass man das Passwort des Benutzers direkt in der MongoDB zurücksetzen kann. Dies sollte wie folgt funktionieren:

Ubiguiti Unifi Controller Passwort zurücksetzen

Via SSH auf den Cloud Key Verbinden und dann an die Mongo DB verbinden:

mongo --port 27117 --shell --quiet

dies führt zu folgender Welcome Message:

type "help" for help
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
	http://docs.mongodb.org/
Questions? Try the support group
	http://groups.google.com/group/mongodb-user

nun lassen wir uns alle Datenbanken anzeigen

show dbs

folgendes Ausgabe kam bei mir:

ace	0.03125GB
ace_stat	0.5GB
local	0.03125GB

nun öffnen wir die ace DB

use ace

bestätigt wird uns das so:

switched to db ace

und nun kam der Moment der mich stutzig machte. Bei der Suche nach Admin Usern blieb das Abfrage Ergebnis leer:

db.admin.find()

Normalerweise, sollte hier in etwa so etwas als Ausgabe kommen:

{ "_id" : ObjectId("5a4552a24f0c66c01a730277"), "x_shadow" : "$6$IeSrq0LS$14mN.UZ5yh2wXspXr.Ee6flD5vg5wRmMqgmnX9DL79u2o/9Z9EaBkLx2Di8OG.Gb0wq6Vy4wnEpg.7Istdfuu1", "name" : "admin", "email" : "yourmail@domain.tld", "time_created" : NumberLong(1514492578), "last_site_name" : "default" }

sollte bei euch die obige Ausgabe kommen, könnt ihr das Passwort wie folgt zurücksetzen: Startet eine neue Konsole, bzw. Terminal und verbindet euch mit dem Cloud Key. Zur Not beendet die MongoDB Verbindung mit exit und führt die nachfolgenden Befehle dort aus:

apt update
apt install whois
printf "mypassword" | mkpasswd --stdin --method=sha-512

Wir installieren hier das Paket whois nach, welches uns ein Passwort Hash Tool mitbringt. mypassword, solltet ihr natürlich in euer Neues Passwort ändern. Die Ausgabe sollte dann in etwa so aussehen:

$6$LvF7R7Q3qo$bXFAWhbscrQ1rxYXF.Ut.iJ5I.59HBx8mpJnF3AayklAgX/izmh/Q16jG4aSlbI557QbwxnnV8LfkyqC0cZhc/

Diesen Hashwert brauchen wir nun wieder in der MongoDB Konsole. Also entweder habt ihr diese noch offen oder ihr befolgt die oben beschriebenen Schritte nochmals. Kopiert euch auf jeden Fall den Hashwert.

In der Mongo DB Konsole, bitte ändert den Hashwert hinter "x_shadow" : in euren ab und prüft die ObjectID:

db.admin.update({"_id":ObjectId("5a4552a24f0c66c01a730277")},{$set: {"x_shadow" : "$6$LvF7R7Q3qo$bXFAWhbscrQ1rxYXF.Ut.iJ5I.59HBx8mpJnF3AayklAgX/izmh/Q16jG4aSlbI557QbwxnnV8LfkyqC0cZhc/"}})

Wenn alles klappt solltet ihr folgende Ausgabe bekommen:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

Verifizieren könnt ihr das nun mit dem folgenden Befehl:

db.admin.find({"name":"admin"})

Und nun, testet euren UI Login im Browser. Wie gesagt, bei mir brachte dies leider nichts. Ich habe den Cloud Key zurückgesetzt und das letzte Backup eingespielt...

Cloud Key zurücksetzen

In der Cloud Key UI unter Maintenance findet ihr den Punkt RESET TO DEFAULTS diesen einfach anwählen und warten bis der Cloud Key einmal neu gestartet ist. Im Anschluss kann man sich am Cloud Key mit den Standard Credentials (ubnt/ubnt) einloggen und den Key soweit Konfigurieren wie man es möchte. Im Anschluss daran, einfach die Controller URL aufrufen. Hier wird man vom Setup Assistenten begrüßt. Ich habe diesen einfach einmal durchgeklickt. Im Anschluss geht man dann in der Controller UI in die Einstellungen zum Menüpunkt Backup. Hier sollten alle alten verfügbaren Backups angezeigt werden. Wählt das letzte aus und drück auf Restore. Der Prozess dauert ein wenig, danach einfach neu einloggen. Dies brachte bei mir den Erfolg! Login geht wieder :-)

Quellen