Nachdem die Synology Disk Station DS210J
schon einige Zeit läuft, möchte ich doch etwas mehr rausholen. Im ersten Schritt möchte ich den ssh-Service einrichten.
Mit dem Disk station Manager 2.2 (DSM) ist das grundsätzlich kein Problem. Einfach im Menü Netzwerkdienste -> Terminal das Häckchen “SSH Dienst aktivieren” setzen und fertig. Aber wenn das wirklich alles wäre, dann gäbe es hier natürlich keinen Eintrag. Also gibt es da noch mehr.
Mir ist direkt aufgefallen, dass ich mich nur mit dem Admin Benutzer oder direkt mit root per ssh an der DS210j anmelden konnte. Das ist natürlich unschön, da ich mir angewöhnt habe, mich nicht überall mitvollen Rechten zu bewegen. Dann merkt man nämlich schneller, wenn man etwas “kaputt machen” könnte.
Wenn manin die /etc/passwd Datei schaut, erkennt man auch sehr schnell, warum sich mein Benutzer nicht anmelden kann. Dort gibt es nämlich eine Zeiel, die so oder so ähnlich aussieht:
Benutzername:x:1022:100:Beschreibung des Benutzers:
/var/services/homes/benutzer:/sbin/nologin
In den man-Pages zu PASSWD findet man Folgendes:
There is one entry per line, and each line has the format:
account:password:UID:GID:GECOS:directory:shell
The field descriptions are:
- account
- the name of the user on the system. It should not contain capital letters.
- password
- the encrypted user password, an asterisk (*), or the letter ‘x’. (See pwconv for an explanation of ‘x’.)
- UID
- the numerical user ID.
- GID
- the numerical primary group ID for this user.
- GECOS
- This field is optional and only used for informational purposes. Usually, it contains the full user name. GECOS means General Electric Comprehensive Operating System, which has been renamed to GCOS when GE’s large systems division was sold to Honeywell. Dennis Ritchie has reported: “Sometimes we sent printer output or batch jobs to the GCOS machine. The gcos field in the password file was a place to stash the information for the $IDENTcard. Not elegant.”
- directory
- the user’s $HOME directory.
- shell
- the program to run at login (if empty, use /bin/sh). If set to a non-existing executable, the user will be unable to login through login(1).
Das Augenmerk sollte man also auf das Ende der Zeile richten. An der Stelle, wo dem Benutzer eine Shell zugeordnet wird, steht nämlich “/sbin/nologin”. Noch Fragen? Wenn man an die Stelle von “sbin/nologin” eine gültige Shell, z.B. “/bin/sh”, setzt, sollte sich der Benutzer per ssh anmelden können.
Die reine Funktionalität ist nun gegeben, aber irgendwiestört es mich, dass ich jedes Mal ein Passwort eingeben muss, obwohl ich michdoch von einem vertrauenswürdigem Rechner aus anmelde. Das muss auch anders gehen. Das Zauberwort heißt: Public Key Authentication. Für die Public Key Authentication benötigt man einen private und einen public Key. Der public Key wird auf den Server, in diesem Fall die DS210j, übertragen, und der private Key verbleibt auf dem Client, bei mir also der MacMini.
Dazu erzeugen wir auf dem Client, MacMini, im home-Verzeichnis des Users ein Verzeichnis .ssh
mkdir .ssh
chmod 700 .ssh
und wechseln in dieses Verzeichnis. Das Schlüsselpaar wird unter OpenSSH mit
ssh-keygen -t dsa
erzeugt. Während der Erzeugung wird nach dem Dateinamen gefragt. Hier kann man den Default Wert übernehmen. Die Zweite Frage gilt der Passphrase. Die Passphrase ist quasi ein Passwort für den Schlüssel. Ich vergebe hier kein Passwort, denn dann wäre die Aktion ja etwas sinnfrei. Außerdem komme ja nur ich an diese Datei, da ich mich ja schon an meinen Rechner anmelde. Wenn man den Key aber z.B. auf einem USB Stick mit sich herumträgt, dann sollte man hier jedoch ein Passwort wählen. Das Verfahren erfüllt dann den Zweck einer verschärften Sicherheit durch “Wissen und Besitzen”. D.H. ich muss im Besitz der Datei sein und zusätzlich das Passwort wissen. Schon geil, oder?
Nach der Ausführung des ssh-keygen Befehls erhält man zwei Dateien, z.B. id_dsa (private key) und id_das.pub (public key). Da die synology kein scp kann, wird der public key wird mit dem Befehl
tar cvf - $HOME/.ssh/id_dsa.pub | ssh user@ds210j 'tar xvf -'
auf den Server übertragen. Die Variablen user und ds210j sind natürlich entsprechend anzupassen.
nun melden wir uns auf der DS210j an.
ssh user@ds210j
Jetzt werden wir natürlich noch nach dem Passwort gefragt. auf der DS210j erstellen wir im Home Verzeichnis des Users auch das .ssh Verzeichnis.
mkdir .ssh
chmod 700 .ssh
Der erzeugte und hochgeladene public key muss noch der Datei authorized-keys hinzugefügt werden.
cat id_dsa.pub >> .ssh/autorized_keys
Der public key kann gelöscht werden und die Datei authorized_keys benötigtnoch die entsprechenden Rechte.
rm id_dsa.pub
chmod 600 .ssh/*
Nun sollte die DS210j bei einer ssh Anmeldung von dem MacMini mit unserem User nicht mehr nach einem Passwort fragen.