Um sich ohne Passwort auf einen UniFi Access Point einzuloggen, ist der SSH Public Key auf dem Access Point in folgender Datei zu hinterlegen:
Persistent
Folgende Anpassungen überlebt Reboots des Access Points und ist dementsprechend die einzig zuverlässige Variante ohne böse Überraschungen.
Auf dem Server, der als UniFi-Controller dient, legt man eine Datei namens config.properties an, die folgende Zeilen enthält:
config.system_cfg.1=sshd.auth.key.1.status=enabled config.system_cfg.2=sshd.auth.key.1.value=AAA...== Beschreibung des Public Keys 1 config.system_cfg.3=sshd.auth.key.1.type=ssh-rsa config.system_cfg.4=sshd.auth.key.2.status=enabled config.system_cfg.5=sshd.auth.key.2.value=AAA...== Beschreibung des Public Keys 2 config.system_cfg.6=sshd.auth.key.2.type=ssh-rsa config.system_cfg.7=sshd.auth.key.3.status=enabled config.system_cfg.8=sshd.auth.key.3.value=AAA...== Beschreibung des Public Keys 3 config.system_cfg.9=sshd.auth.key.3.type=ssh-rsa config.system_cfg.10=sshd.auth.key.4.status=enabled config.system_cfg.11=sshd.auth.key.4.value=AAA...== Beschreibung des Public Keys 4 config.system_cfg.12=sshd.auth.key.4.type=ssh-rsa
Im obigen Beispiel konfiguriere ich insgesamt vier Public Keys (sshd.auth.key.1 bis sshd.auth.key.4). Wer nur einen Schlüssel hinterlegen muss, pflegt dementsprechend nur die ersten drei Zeilen in die Datei ein.
Dem Wert sshd.auth.key.1.value weist man den ganzen Public Key zu, ohne aber den Typ (bei mir ssh-rsa) zu erwähnen. Auch Anführungszeichen sind nicht nötig, wenn dem Public Key noch eine Beschreibung mit Leerschlägen folgt (ist bei mir der Fall).
Der Pfad zu dieser Datei hängt vom Betriebssystem und den im Controller definierten Site-Namen ab. Bei mir (Debian GNU/Linux, Site-Name „default“) lautet der Pfad /var/lib/unifi/sites/default/config.properties.
Die Inspiration für dieses Prozedere habe ich dem Artikel UniFi – Add Custom SSH Keys to Your UniFi Devices entnommen.
Den Site-Namen findet man mit folgender Anleitung heraus: UniFi – config.properties File Explanation. Weitere Optionen (bspw. Public Keys, die nur auf einzelne Access Points ausgerollt werden) findet man im Artikel UniFi – How to make persistent changes to UAP(s) system.cfg.
Nicht persistent
Folgende, je nach Firmware unterschiedliche Methoden, erlauben ebenfalls den passwortlosen Login. Nach dem nächsten Neustart des Access Points müssen die Schritte aber zwingend wiederholt werden — die Anpassungen sind nicht persistent.
Firmware 3.4.19
/etc/persistent/.ssh/authorized_keys
Via: ssh key based auth
Wie ich im Januar 2017 bemerken musste, konnte ich mich so nicht mehr mit meinen SSH-Schlüsseln auf die UniFi Access Points einloggen. Nach einer Stunde debuggen dann endlich die Erkenntnis:
Firmware 3.7.28.5442
/etc/dropbear/authorized_keys
Evtl. ist auch noch folgender Befehl nötig (das merke ich spätestens beim nächsten Reboot):
# cfgmtd -w -p /etc
Quelle: Unifi AP: Maintaining SSH access whilst disabling password logins (authorized_keys only) sowie Hacking the KanKun Smartplug – HowTo: Login to SSH on BusyBox (DropBear) Without a Password