Featured image of post Synology DS213+ - SSH mit Zertifikaten

Synology DS213+ - SSH mit Zertifikaten

Last modified:

Einleitung

Auf der Synology DS213+ läuft ein Linux System. Dies kann man manchmal am bequemsten per Konsole über SSH steuern. Dabei hat man entweder die Möglichkeit eine User/Passwort Kombination oder eine User/Zertifikat Kombination zum Authentifizieren zu verwenden. Letztere ist deutlich sicherer und auch bequemer. Ich möchte daher kurz meine eigene Version der notwendigen Schritte bloggen, da die meisten verfügbaren Anleitungen nicht alle Schritte optimal für meine Situation lösen. Daher bekommt ihr hier jetzt meine Vorgehensweise, die teilweise Befehle aus den verlinkten Anleitungen nutzt:

Aktivieren des SSH/Telnet Dienstes auf der DS

Systemsteuerung, Terminal, Haken bei beiden Diensten setzen. Telnet machen wir im Moment nur an, damit wir im Notfall per Telnet uns auf die Konsole anmelden können. Dieser Dienst sollte nach erfolgreicher Konfiguration wieder dringend geschlossen werden, da die Daten unverschlüsselt übertragen werden!

Einloggen mittels SSH

Ich gehe mal davon aus, das jeder schon einmal SSH verwendet hat. Wenn nicht, dann gibt es z.B. hier eine gute Anleitung. Ich selber nutze Mac OS X, daher bezieht sich diese Anleitung auch nur auf Mac OS X, sollte aber mit jedem Linux ähnlich machbar sein. Windows User mögen an dieser Stelle sich über Putty informieren.

Als User verwendet man root mit dem Passwort des DiskStation admin Benutzers.

SSH Key generieren

Mit dem Befehl

ssh-keygen -t rsa

wird ein SSH Schlüsselpaar auf der DS erzeugt. Dieses ist dann gültig für den root User. Man kann diesen Schritt aber auch für einzelne Benutzer anlegen, wenn man denn vorher unter Systemsteuerung, Benutzer, Benutzerbasis den Benutzer-Home-Dienst aktiviert hat. Damit erhält dann jeder Benutzer ein eigenes home Verzeichnis, indem dann z.B. die SSH Keys abgelegt werden können.

Bei der Erzeugung wird man nach einem Passwort gefragt. Dieses Passwort wird verwendet, um das Zertifikat vor unbefugter Benutzung zu schützen. Meine Empfehlung: Definitiv eins setzen. Man muss es dann jedes Mal vor der Verwendung des Schlüssels eingeben (es sei denn, man speichert es, aber dazu später mehr).

Aus dem erzeugten Schlüsselpaar kopieren wir jetzt den öffentlichen Schlüssel in die Datei authorized_keys:

cat /root/.ssh/id_rsa.pub  >> /root/.ssh/authorized_keys

Dieser Befehl hängt den Inhalt von id_rsa.pub an das Ende von authorized_keys und erzeugt die Datei, falls sie noch nicht existiert. Die Datei wird jetzt vor neugierigen Blicken auf dem System geschützt, es darf nur noch root die Datei lesen:

chmod 600 /root/.ssh/authorized_keys

Die Inhalte des privaten und des öffentlichen Schlüssels sichern wir jetzt auf eurem PC. Dazu könnt ihr am einfachsten die Inhalte mit dem cat Befehl anzeigen lassen und kopiert sie einfach aus dem Terminal in eine Datei auf eurem PC. Hier gibt es auch elegantere Methoden (mit scp rüberkopieren), aber das lasse ich im Moment um es nicht unnötig kompliziert zu machen. Kopiert den Inhalt von

cat /root/.ssh/id_rsa

in eine id_rsa_ds213plus Datei auf eurem System. Das Gleiche macht ihr auch für die Datei id_rsa.pub und kopiert sie in eine id_rsa_ds213plus.pub Datei auf eurem System:

cat /root/.ssh/id_rsa.pub

Ihr solltet jetzt zwei Dateien haben:

  • id_rsa_ds213plus - euer privater Schlüssel
  • id_rsa_ds213plus.pub - euer öffentlicher Schlüssel

SSH Daemon konfigurieren

Ihr müsst die Authentifizierung mit Zertifikaten erst noch aktivieren. Dies stellt ihr in der Datei sshd_config ein. Diese Datei findet ihr im Ordner /etc/ssh. Ich benutze den Editor vi. Die Bedienung des Editors erkläre ich jetzt nicht, da verweise ich auf diese Seite.

Es müssen jetzt folgende drei Stellen auskommentiert bzw. hinzugefügt werden:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile ~/.ssh/authorized_keys

Bevor jetzt der SSH Dienst voreilig neugestartet wird, müsst ihr erst einmal auf eurem Client die Konfiguration entsprechend anpassen.

SSH Client konfigurieren

Ihr habt im Schritt 3 zwei Dateien erzeugt mit dem Schlüsselpaar. Diese Dateien kopiert ihr euch in das .ssh Verzeichnis eures Benutzers und setzt die Rechte nur für diesen Benutzer mit dem Befehl

chmod 600 id_rsa_ds213plus*

In der Datei config legen wir jetzt eine Verbindungskonfiguration an. Falls die Datei noch nicht existiert, erzeugt sie. Die Datei soll ebenfalls im .ssh Verzeichnes des Users liegen. Ihr Inhalt sieht wie folgt aus:

Host ds
 HostName IP-der-DS
 Port 22
 User root
 IdentityFile ~/.ssh/id_rsa_ds213plus

Wenn man jetzt ssh ds als Befehl eintippen würde, so würde dein SSH Client sich zu deiner DS unter der angegebenen IP verbinden auf Port 22, mit User root und dem privaten Schlüssel den wir vorhin kopiert hatten.

Testen

Der SSH Daemon muss neugestartet werden auf der DS. Dies geschieht mit dem Befehl

sh /usr/syno/etc.defaults/rc.d/S95sshd.sh restart

Anschließend ist deine aktive SSH Verbindung getrennt worden. Solltest du hier einen Fehler gemacht haben, so kommst du nicht mehr per SSH auf die DS. Hier kannst du dann aber die vorhin aktivierte Telnet Verbindung als Backup benutzen.

Verbinde dich erneut mit

ssh ds

Du solltest jetzt nach deinem Passwort zu dem vorhin erstellten SSH Schlüsselpaar gefragt werden. Hast du es eingegeben, so bist du direkt eingeloggt und musst nicht mehr das Passwort des DS admin verwenden.

Aufräumen

In der config Datei des SSH Daemons kann man jetzt noch die User/Passwort Authentifizierung abschalten. Dies geschieht mit folgender Zeile:

PasswordAuthentication no

Nach einem Neustart des SSH Daemons (siehe oben) solltest du dich nur noch mit deinem SSH Schlüsselpaar anmelden können. Pass also gut auf sie auf!

Deaktiviere nun noch den Telnet Dienst in der Systemsteuerung der DS.

Optionales

Wenn du Mac OS verwendest, so wirst du bereits bei der Eingabe des Passworts für den SSH Key das Feld zum Speichern des Passwortes bemerkt haben. Wenn du diese Option wählst, so wird das Passwort in dem Mac OS Schlüsselbund hinterlegt. Ähnliche Möglichkeiten gibt es auch für Windows und Linux. Da schau am besten in den oben verlinkten Seiten nach.