OpenWRT SSH Zugriff per Public Key

Um sich standardmäßig an OpenWRT per SSH anzumelden, wird das root Passwort benötigt, welches auch für die Anmeldung am Webinterface Luci verwendet wird. Ist der Router auch über das Internet per SSH erreichbar, lässt sich der Zugang mit dem Public Key Verfahren absichern. Hierbei werden zwei asymmetrische Schlüssel erzeugt, die für die Anmeldung verwendet werden. Das Schlüsselpaar besteht aus einem privaten und einem öffentlichen Schlüssel. Der öffentliche Schlüssel kommt immer auf das System, auf dem die Anmeldung ausgeführt werden soll. In diesem Fall ist das der OpenWRT Router. Der private Schlüssel wird nur auf den Systemen benötigt, von denen aus auf den Router zugegriffen werden soll. Als zusätzlicher Schutz wird der private Schlüssel mit einer Passphrase versehen. Diese muss bei der Anmeldung eingegeben werden. Somit wird aus dem Public Key Verfahren eine Zwei Faktor Authentifizierung, da neben dem Schlüssel auch die Passphrase benötigt wird.


Sobald das Verfahren aktiviert wurde, ist eine SSH Anmeldung per Benutzerpasswort nicht mehr möglich. Das Schlüsselpaar lässt sich sowohl unter Windows als auch unter Linux erzeugen. Für Windows wird hierfür das Tool PuttyGen benötigt. Damit lässt sich dann ein RSA Schlüssel mit 4.096 Bit und starker Passphrase erzeugen. Wichtig ist hierbei sowohl den öffentlichen als auch den privaten Schlüssel zu speichern.

OpenWRT SSH Public Key

Unter Linux kann das Schlüsselpaar direkt aus einem Terminal heraus erzeugt werden.

ssh-keygen -b 4096

Als Pfad kann entweder der Standard belassen werden, oder ein alternativer Pfad und Dateiname wird gewählt.

/home/$USER/.ssh/openwrt_rsa

Das Ergebnis sollte dann in etwa so aussehen.

Your identification has been saved in /home/$USER/.ssh/openwrt_rsa.
Your public key has been saved in /home/$USER/.ssh/openwrt_rsa.pub.
The key fingerprint is:
SHA256:2b+foobar-dMfZMwj3ZYxGN8bliblablubbqGQRJobdntKk3up7 foo@bar
The key's randomart image is:
+---[RSA 4096]----+
|      . . .==*=+*|
|       o .oo+o++.|
|        .o.o++  .|
|         ..o+==  |
|        S .B.B.  |
|       .   =+*   |
|           .Oo   |
|           .oXo  |
|           ooE   |
+----[SHA256]-----+

Um den Verbindungsaufbau unter Linux zu beschleunigen, lässt sich ein Alias für die Verbindung einrichten.

nano ~/.ssh/config
Host router
 Hostname 192.168.10.1        
 IdentityFile ~/.ssh/openwrt_rsa
 User root    
 Port 22

Danach muss beim Verbindungsaufbau weniger getippt werden.

ssh router

Die Konfigurationsarbeit auf OpenWRT lässt sich sowohl über das Webinterface Luci als auch über eine Terminalsession erledigen. Im Webinterface muss dazu der Menüpunkt „System/Administration“ ausgewählt werden. Unter SSH-Keys muss der Public Key eingetragen werden. Dazu wird der Inhalt der Datei per Copy & Paste übertragen.

cat ~/.ssh/openwrt_rsa.pub

OpenWRT SSH Public Key

Zusätzlich werden dann noch die Optionen „Password authentication“ und „Allow root login with password“ deaktiviert.

OpenWRT SSH Public Key

Damit ist die Konfiguration über Luci abgeschlossen und das Public Key Verfahren für den SSH Zugang aktiviert. Alternativ wird noch die Konfiguration über das Terminal beschrieben. Hier wird auch der Inhalt des Public Keys benötigt, der noch auf dem Rechner liegt, auf dem das Schlüsselpaar erzeugt wurde.

cat ~/.ssh/openwrt_rsa.pub

Der Inhalt wird in die Datei „authorized_keys“ eingetragen.

vi /etc/dropbear/authorized_keys

Danach werden die Berechtigungen neu gesetzt.

chmod 700 /etc/dropbear/
chmod 600 /etc/dropbear/authorized_keys

Als letzter Schritt werden noch der Passwort Login und Root Passwort Login deaktiviert. Die dafür benötigte Konfiguration sollte dann wie folgt aussehen.

vi /etc/config/dropbear
config dropbear
        option Port '22'
        option Interface 'lan'
        option PasswordAuth 'off'
        option RootPasswordAuth 'off'

Ab jetzt ist kein SSH Zugriff über ein Benutzerpasswort mehr möglich. Die erfolgreiche Authentifizierung ist nur noch mit dem privaten Schlüssel und der Passphrase möglich.