Synology: Rechner mittels rsync und SSH ohne Passwort-Eingabe auf das NAS sichern

17 April 2013 47 Kommentare Autor: Jürgen (jdo)

Ich habe ja nun dieses wunderschöne kleine NAS (Synology), auf das ich wunderbar meine Daten sichern kann. Das Gerät lässt sich über die wirklich gut gemachte Web-Oberfläche sehr schön administrieren und das Freigeben von CIFS/SMB, NFS und Mac File System ist wirklcih ein Kinderspiel.

Damit kann man schon jede Menge anfangen und auch rsync würde funktionieren, wenn ich eine dieser Freigaben in meinen Rechner einbinden würde. Das Synology basiert auf Linux und bringt sowohl SSH als auch rsync mit sich. Demnach sollte es also möglich sein, meinen Linux-Rechner via rsync und ssh ohne Passwort-Eingabe auf das NAS zu sichern. Es ist auch möglich, allerdings gibt es da Stolpersteine, die ich hier zeigen möchte.

Vorbereitung

Zunächst müssen wir sicherstellen, dass der SSH-Dienst auf dem Synology läuft. Dazu klickst Du im Kontroll-Zentrum auf Terminal und setzt den Haken bei SSH-Dienst.

Synology: Kontrollzentrum

Synology: Kontrollzentrum

Synology: SSH-Dienst aktivieren

Synology: SSH-Dienst aktivieren

Nun kannst Du Dich via SSH am Synology anmelden. Das root-Passwort ist übrigens gleich dem admin-Kennwort. Ich zeige die Prozedur mit dem root-Konto, was eigentlich nicht ganz optimal ist. Hier intern ist mir das allerdings egal, weil sowieso nur 2 Leute auf das NAS Zugriff haben und ein Einbrecher auch zunächst meine Schlüssel klauen müsste. Sollte mir das Notebook gestohlen werden, käme der Einbrecher allerdings nicht auf das NAS, weil es nicht aus dem Internet erreichbar ist. Somit ist die Verwendung von root in meinem Fall ein für mich akzeptables Risiko.

Du kannst das Ganze auch auf Benutzerebene machen, dann musst Du aber die Home-Verzeichnisse der Benutzer aktivieren. Das kannst Du in der Benutzer-Administration des Geräts festlegen. Danach funktioniert die Anleitung genau gleich, außer dass das zu verwendende Verzeichnis anstelle von /root/.ssh/ eben (in meinem Fall, nur ein Volume) /volume1/homes/<Anwendername>/.ssh/ wäre.

Hinweis: Auch wenn sich der Anwender nicht via ssh anmelden kann, funktioniert ein rsync via ssh dennoch! Also hier nicht stecken bleiben und einen Fehler suchen, der nicht da ist.

Synology: Home aktivieren

Synology: Home aktivieren

Hinweis (Danke an Sven): Bei (auf jeden Fall) DSM 5.2 muss der Haken bei Netzkwersicherungs-Dienst aktivieren unter Datensicherung & Replikation > Sicherungsdienste > Netzwerksicherungsziel gesetzt sein. Port ist 22, wenn man über Standard-SSH sichern möchte.

Netzwerk-Sicherungsdienst aktivieren

Netzwerk-Sicherungsdienst aktivieren

RSAAuthentication aktivieren

Man könnte rsync nun bereits benutzen, allerdings verlangt die Prozedur ein Passwort. Ich will aber meinen Rechner alle Stunde über einen Cronjob sichern und da ist eine Passwort-Abfrage alles andere als optimal. Da gibt es ja diese Möglichkeit, eine Anmeldung über Schlüssel zu realisieren. Diese ist auf dem Synology allerdings deaktiviert und lässt sich nicht über die Web-Oberfläche einstellen. Deswegen musst Du Dich via ssh als root auf der Kiste anmelden und danach die Datei /etc/ssh/sshd_config anpassen.

  • ssh root@<IP-Adresse-des-Synology>
  • vi /etc/ssh/sshd_config

Hier suchst Du nun nach der Zeile #RSAAuthentication yes und löscht die Doppelkreuze vor den beiden darunterliegenden Zeilen. Das Ganze sollte dann so aussehen:

Synology: RSAAuthentication aktivieren

Synology: RSAAuthentication aktivieren

Nun machen wir zunächst auf dem Client weiter.

Schlüsselpaar auf dem Client erzeugen

Der Befehl ssh-keygen -t rsa -b 2048 -f rsync-key erzeugt ein Schlüsselpaar (rsync-key kannst Du beliebig austauschen). Du wirst nach einem Passwort gefragt, das Du zwei Mal mit Drücken der Eingabetaste überspringst – also kein Passwort festlegen, sonst würden wir beim Einsatz von rsync wieder danach gefragt. Ist das Schlüsselpaar erzeugt, sicherst Du den privaten Schlüssel noch maximal ab: chmod 600 rsync-key. Am besten ist es wohl, wenn man das Schlüsselpaar unter /home/<Anwender>/.ssh/ ablegt – aber entscheiden kannst Du das selbst. Hier ein Beispiel der Prozedur (nein, ich verwende diesen Schlüssel nicht 😉 )

SSH: Schlüsselpaar erzeugen

SSH: Schlüsselpaar erzeugen

Solltest Du beim erzeugen des Schlüsselpaars die Option -f rsync-key weglassen, schlägt die Software sowieso /home/<Anwender>/.ssh/ vor und wird als Dateinamen id_rsa und id_rsa.pub verwenden.

Tipp: Danke an Dakira für den Hinweis, dass man den Schlüssel auch mittels ssh-copy-id auf das NAS bringen kann: ssh-copy-id root@NAS (würde die Standard-Dateien nehmen) und mit -i kannst Du eine spezielle Datei angeben. Mehr Informationen dazu in man ssh-copy-id.

Zurück auf dem NAS

Nun kopierst Du den öffentlichen Schlüssel (mit der Endung .pub) irgendwie auf das NAS (Samba-Freigabe, NFS, was auch immer). Ich habe nun im Verzeichnis /root/ (Erinnerung hier an die Home-Verzeichnisse, wie weiter oben beschrieben!) das Unterverzeichnis .ssh angelegt (mkdir .ssh) und in diesem Unterverzeichnis mittels touch authorized_keys die gleich benötigte Authentifizierungs-Datei erschaffen. Diese kannst Du auch wieder mit chmod 600 authorized_keys besser schützen (wobei nur root Zugriff auf das Verzeichnis /root/ hat, aber notwendig, wenn Du das mit einem andern Anwender realisierst).

authorized_keys im Verzeichnis .ssh

authorized_keys im Verzeichnis .ssh

Nun übertragen wir den öffentlichen Schlüssel in die Datei authorized_keys. Das sieht in diesem Fall so aus: cat /<Pfad zu Schlüssel>/rsync-key.pub >> authorized_keys. Nun solltest Du die .pub-Datei wieder löschen.

Hinweis: Will man sich mit einem Anwender ohne Passwort auf dem Synology anmelden, dann muss das Home-Verzeichnis die Berechtigung 755 und die Datei authorized_keys 644 haben. So hat das zumindest bei einem Leser geklappt, wie in den Kommentaren nachzulesen ist.

rsync auf dem Client abfeuern

Wieder auf dem Client kannst Du nun ausprobieren, ob alles funktioniert. Ich habe zum Beispiel eine Freigabe juergen, die auf dem Synology unter /volume1/juergen/ liegt. Dahin möchte ich auch meine Sicherung machen. Der Befehl sieht zum Beispiel so aus (die IP-Adresse meines Synology ist 192.168.100.10):

rsync -avuz --delete -e '/usr/bin/ssh -i /home/bitblokes/.ssh/rsync-key' /home/bitblokes/ root@192.168.100.10:/volume1/juergen

Das würde mir das komplette Home-Verzeichnis meines Notebooks auf das NAS sichern. Das Ganze kannst Du natürlich an Deine Gegebenheiten anpassen.

Die Geschichte automatisieren

Wenn ich nun das Ganze automatisieren möchte, lege ich dazu auf meinem Client einen Cronjob an. rsync sichert bekanntlich nur die Änderungen und somit ist nach einer Erstsicherung ein Backup in der Regel schnell durchgeführt. Mir reicht es dennoch, wenn meine Daten alle 2 Stunden gesichert werden.

Dazu öffnest Du die Crontab mittels crontab -e und gibst entsprechend die gewünschte Zeile ein. Bei mir würde das nun so aussehen:

0 */2 * * * /usr/bin/rsync -avuz --delete -e '/usr/bin/ssh -i /home/bitblokes/.ssh/rsync-key' /home/bitblokes/ root@192.168.100.10:/volume1/juergen >> /dev/null 2>&1

Es ist der selbe Befehl wie oben, nur bei rsync der komplette Pfad angegeben. Das /dev/null 2>&1 bewirkt, dass keine Log-Dateien geschrieben werden. Die Zahlen-Sternchen-Kombination steht für alle 2 Stunden. Eine Stunde würde dazu äquivalent 0 */2 * * * sein un alle 30 Minuten sähen so aus: */30 * * * *

Cronjob mit rsync anlegen

Cronjob mit rsync anlegen

Das Ganze hört sich vielleicht komplizierter an, als es ist. Aber Du kannst das leicht in 15 Minuten selbst einrichten. Der Vorteil liegt auf der Hand: Meine Daten werden automatisch gesichert und ich kann das Backup nicht vergessen. Wenn der Rechner läuft, wird auch ein Backup durchgeführt.

Du kannst gerne Deinen Senf zu diesem Beitrag geben: Hier geht es zu den Kommentaren




Schreiben macht durstig! Eine kleine Erfrischung kann daher nie schaden. Wem dieser freie Artikel gefallen hat, der darf mir gerne einen frisch gezapften Hopfen-Tee ausgeben (Paypal - der Spenden-Knopf
oder bitcoin - Adresse: 1NacVNwcLLePUVv8uSafu5Ykdwh8QyDfgK). Ich freue mich über jede noch so kleine Spende. Vielen Dank und Prost!
 Alle Kommentare als Feed abonnieren

47 Kommentare zu “Synology: Rechner mittels rsync und SSH ohne Passwort-Eingabe auf das NAS sichern”

  1. dakira sagt:

    Tip: ssh-copy-id root@NAS

    So haste den key auch auf dem NAS und musst nichts extra machen.

    • jdo sagt:

      stimmt, danke für den Tipp ... ich nehme das oben noch auf. Ich vergesse das immer, weil die andere Methode hat sich über die Jahre so bei mir eingebläut ... ich verwende in der Regel scp, um den .pub-Schlüssel zu kopieren - im Endeffekt ist es egal, wie man das Ding dahin bekommt, aber Deine Methode ist wohl deutlich am Einfachsten 🙂

  2. Joachim sagt:

    Hi,
    habe das Schlüsselpaar ohne Passwort erzeugt (mit ENTER übersprungen), aber beim ausführen des Befhels wird immer das root-Passwort verlangt. Ist das richtig so und wird das dann beim crontab auch verlangt?

  3. Lasse sagt:

    Hi,
    habe das gleiche Problem wie Joachim. Auch nachdem ich die Anleitung nochmal abgearbeitet habe... Ne Idee, woran das liegen könnte oder wie ich jetzt vorgehen sollte, um den Fehler zu finden? Bin noch ziemlich frisch mit dem Synology NAS unterwegs...

  4. Joachim sagt:

    ja, ist komisch.
    Wenn ich ein Schlüsselpaar MIT PW erzeuge, verlangt er das neu erzeugte Passwort UND das root-PW.
    Allerdings habe ich den Befehl nur in der Console getestet. Noch nicht automatisch per cron.

    • jdo sagt:

      Ob Konsole oder cron sollte egal sein. Du musst Dich so oder so ohne Passwort anmelden können. Was passiert denn, wenn Du versuchst, Dich mit ssh -i root@NAS anzumelden? Kommt da eine Fehlermeldung oder geht das glatt durch?

  5. Joachim sagt:

    Dann kommt keine Fehlermeldung, sonder ein PW Abfrage 🙂
    die rsync-key, rsync-keys.pub und authorized_keys habe ich 100%ig ohne PW erstellt... (ich erzeug aber zur Sicherheit nochmal die Keys und überspringe dann die Eingabe wieder mit [ENTER])

    • jdo sagt:

      Dann überprüfe mal auf dem Synology im Verzeichnis .ssh (falls Du root verwendest ist es unter /root/.ssh) die Datei authorized_keys. Der Schlüssel muss in einer Zeile stehen. Da darf kein Return dazwischen sein. Wenn Du die Datei mit vi aufmachst, siehst Du am unteren Rand die Zeile in der Du Dich befindest. Ist der Schlüssel über mehrere Zeilen verteilt, würde das ein Problem sein und Dein Phänomen erklären.

      Du kannst die Datei auch wegsichern und dann nochmal komplett löschen und oder erstellen lassen.

  6. Joachim sagt:

    Hi,
    "leider" alles in eine Zeile 🙂
    Macht es nen Unterschied wenn ich den Prozess mit einem anderen User ausführe? Probier ich mal...

    • jdo sagt:

      Der Anwender ist eigentlich nicht entscheidend, weil das eben über das Schlüsselpaar geregelt wird. Ich hab das gerade verifiziert und mich über den Schlüssel sowohl aus root als auch mit meinem Anwendernamen ohne Passwort angemeldet.

  7. QuestionM sagt:

    Hi, habe folgendes Problem.
    habe alle Anweisungen so befolgt wie oben genannt.
    Jedoch bekomme ich immer folgende Fehlermeldung wenn ich

    rsync -avuz --delete -e '/usr/bin/ssh -i /volume1/homes/admin/.ssh/
    rsync-key' //root@192.168.155.13:/volume1/homes/admin/Sicherung

    eingebe.

    sending incremental file list
    rsync: link_stat "/rsync" failed: No such file or directory (2)
    rsync: change_dir#3 "//root@192.168.155.13:/volume1/homes/admin" failed: No such file or directory (2)
    rsync error: errors selecting input/output files, dirs (code 3) at main.c(653) [Receiver=3.0.9]
    rsync error: rsync service is no running (code 43) at io.c(687) [sender=3.0.9]

    Das Problem wird der Pfad sein den ich angegen habe.
    Ich habe einen Ordner unter Homes/admin/Sicherung eingerichtet und will darin die Sicherung unseres Servers rein haben.

    Bin sehr unvertraut mit Synology und weiß nicht wie ich den Pfad angeben soll. Bitte um Hilfe
    Lg

    • jdo sagt:

      In Deinem rsync Befehl fehlt die Quelle. Schau Dir mal an, wie rsync funktioniert (man rsync). Die Syntax ist rsync [Quelle] [Ziel]

  8. lutz sagt:

    Ist es auch möglich, dass das rsync vom synology aus läuft?
    Also einfach ein paar cron jobs auf dem synology installieren, die regelmäßig backups von clients/servern ziehen.
    So hat man alles zentral und muss auf den clients/servern nur den Zugang ermöglichen.

    Hat jemand Erfahrung damit?

    • jdo sagt:

      Hi,

      rsync läuft natürlich von beiden Richtungen aus. Voraussetzung ist, dass auf beiden Rechnern rsync installiert ist. Das gilt natürlich dann nicht, wenn der eine Rechner ein Remote-Laufwerk des anderen einbindet - dann sieht es ja so aus, als wäre es ein lokales Laufwerk.

      In Deinem Fall sollten dann die Rechner allerdings eine fixe IP-Adresse haben, oder via DNS oder Zeroconf immer gleich erreichbar sein.

      Viele Grüße,
      Jürgen

  9. René sagt:

    Hallo,

    nach etwa 5 Stunden (statt 15 Minuten :/) habe ich eine kleine Ergänzung, da bei mir ein sehr nerviges "Permission denied" ohne weitere Erläuterung beim Absetzen des rsync-Befehls auftrat.

    Auf der Synology muss im Hauptmenü "Datensicherung & Replikation" aufgerufen werden. Dort unter Sicherungsdienste zwei Haken setzen (Netzwerk-Sicherungsdienst... und Benutzerdefinierte rsync...) Port 22 darf so bleiben.

    Zumindest bei meiner DS414 mit DSM 5.1-5004

    Ansonsten: Sehr schöne Anleitung für sehr elegante Methode die Daten "nebenbei" auf das NAS zu bekommen. Vielen Dank dafür!

  10. Olli sagt:

    Hi,

    vorne weg - Danke für die Anleitung!

    leider muss ich mich in die Reihe derer einreihen bei denen es nicht klappt (weder mit root noch mit einem anderen User... 🙁 )

    Ich gehe zudem mal davon aus, dass du nicht chown 600 sondern chmod meintest?! " Diese kannst Du auch wieder mit chown 600 authorized_keys besser schützen (wobei nur root Zugriff auf das Verzeichnis /root/ hat, aber notwendig, wenn Du das mit einem andern Anwender realisierst)."

    Gibt es denn weitere Erkenntnisse zum Thema: "Passwort wird trotzdem abgefragt" ?

    • jdo sagt:

      Wenn das Passwort abgefragt wird, dann stimmt irgendetwas mit dem Schlüssel nicht, beziehungsweise wird dieser nicht akzeptiert. Bei mir klappt das immer noch. Ich sichere so 2 Rechner automatisch.

      Stimmt, das muss chmod heißen - danke für den Hinweis!

  11. Olli sagt:

    Danke für die schnelle Antwort!

    Ich vermute, dass es an der verwendeten Firmwareversion der Synology liegt, da ich mich mittels ssh und Passwort verbinden kann und trotzdem über den Befehl "synoservicectl --status sshd" die Meldung bekomme, dass der Dienst gestoppt ist... Ich stehe gerade echt auf dem Schlauch...

  12. Wolf sagt:

    Ich bekomme beim Verbinden immer ein
    ssh_exchange_identification: Connection closed by remote host

    der Key liegt unter /volume1/homes/Benutzer/.rss
    Muss ich, wenn ich es nicht über root mache etwas in der config ändern?

  13. Wolf sagt:

    Ok Das war mein Fehler. Das NAS hat die IP wegen zuvielen versuchen geblockt.

    Allerdings muss ich trotzdem das password eingeben.

  14. Wolf sagt:

    Das Home vom User hat 755 .ssh 700 und die authorized_keys 600

  15. Wolf sagt:

    Jetzt gehts. Fehler gefunden nach langem suchen. Die authorized_keys braucht die 644

    • jdo sagt:

      SSH ist bei den Berechtigungen eine echte Zicke 🙂 aber schön, dass e nun funktioniert. Ich glaube, dass ich das oben noch aufnehmen sollte.

  16. IT-Wolf sagt:

    Kannst du gerne machen. Erleichtert vielleicht den einen oder anderen die Suche 😉

  17. Sven sagt:

    Hallo Jürgen

    Erst einmal Danke für die tolle Anleitung.

    Aber leider klappt es bei mir nicht so recht.
    Also folgende Dinge habe ich durchgeführt:
    - Alles nach Beschreibung gemacht.
    - Da ich einen eigenen user für das backup habe, hab ich den pfad für die authorized_keys Datei von .ssh/authorized_keys auf /volume1/homes/user/.ssh/authorized_keys geändert.
    - Besitzer aller Ordner und Dateien ist der User.

    Wenn ich mich jetzt auf dem DS mit dem User anmelde, kommt immer noch eine password Abfrage. Reboot half auch nicht.
    Woran kann es jetzt noch hängen???

    viele Grüsse

    Sven

  18. Sven sagt:

    Jep hat sie
    Hab alle rechte nach lesen deiner Anleitung und der Kommentare angepasst.

    • jdo sagt:

      Hmmm schwer zu sagen. Ich würde es an dieser Stelle mal mit root versuchen, nur um sicher zu sein, dass es generell klappt.

    • jdo sagt:

      Habe gerade anderswo gelesen, dass die . ssh auf 700 setzen. Das ist immer schwer zu sagen. Das kleinste Detail kann hier zu unerwünschten Ergebnissen führen. Bei mir klappt das genau so seit Jahren - aus nach mehreren OS-Upgrades...

  19. Sven sagt:

    Hab ich gemacht.
    - .ssh ordner auf /root angelegt
    - authorized_keys rein kopiert
    - Rechte angepasst
    - in der /etc/ssh/sshd_config den Pfad für die authorized_keys Datei wieder angepasst

    Dann log out und log in mit root user und wieder mit password. 🙁

    Hier noch ein Ausschnitt aus der ssh_config

    #RSAAuthentication yes
    PubkeyAuthentication yes

    # The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
    # but this is overridden so installations will only check .ssh/authorized_keys
    #AuthorizedKeysFile .ssh/authorized_keys

  20. Sven sagt:

    Jep
    Das Doppelkreuz hab ich auch schon gesehen 🙁 Immer diese dummen Fehler...
    Der Benutzer auf meiner Linux Kiste ist der selbe, wie der den ich auf dem DS eingerichtet hatte. Gleicher Nane, gleiches PW.

    Ich werd mal noch ein bischen rum probieren und alle Schritte noch einmal einzeln durchgehen.....aber nicht mehr heute.
    Wenn ich es schaffe und weiss woran es gelegen hat, melde ich mich.
    Ein ganz grosses DANKE für deine schnelle Hilfe.

  21. Sven sagt:

    Hallo Jürgen / Alle

    Ich bin den Fehlern auf die Schliche gekommen.

    Thema ssh:

    Mit einem anderen User (nicht root auf der DS) konnte ich nicht anmelden.
    Der Fehler lag bei mir. Und zwar, das .ssh/rsync-key ja im eingenen Home Verzeichnis auf meinem PC liegt.

    Tehma rsync:

    Beim rsync bekam ich immer die Fehlermeldung "Permission denied".
    Hier lag es daran, das mein DS DSM 5.2 benutzt.
    Hier muss unter Datensicherung & Replikation > Sicherungsdienste > der Netzwerk Sicherungsdienst aktiviert werden.

    Ich hoffe, es hilft euch.

  22. IT-Wolf sagt:

    Mahlzeit.

    Weißt du wie das mit DSM 6 ist? Seit dem das drauf ist, geht die Sicherung nicht mehr

    • jdo sagt:

      weiß ich leider nicht ... bin derzeit auch nicht zuhause und omit nicht mal in der Nähe meines Synos ... weiß auch noch nicht, ob ich aktualisiere ...

  23. MiRa sagt:

    Bei DSM 6 gibt es unter Systemsteuerung / Dateidienste extra einen Reiter rsync, in der der Dienst aktiviert werden kann. Danach gab es andere Fehlermeldungen ... aber das hatte mit den Rechten zu tun.

  24. IT-Wolf sagt:

    Nach dem Aktivieren kan aich jetzt den rsync starten, allerdings kommt dann wieder die PW Abfrage nd nach Eingabe u.a. folgendes:
    Could not chdir to home directory /var/services/homes/Backup: Permission denied

    Dabei hat der Backup zugriff auf alle Ordner und die authorized_keys
    chown is Backup:root

  25. mo sagt:

    ich veranstaltete gleiches, mit einem shclüssel, liess die daten automatisiert sichern. bis der tag kam. ich weiss nicht wie es dazu kam, aber die quellfestplatte gab keine daten mehr aus. das backup wurde gelöscht. grosse augen. der stecker hatte einen wackeligen. ich habe keine ahnung was passierte. das hätte alles viel schlimmer kommen können. das problem bei automatisierungen ist, das men etwas erst dann mitbekommt wenn es bereits zu spät ist.

    • jdo sagt:

      Du könntest mit einem Script und einer if-Abfrage testen, ob zum Beispiel eine bestimmte Datei auf der Quelle vorhanden ist und erst dann rsync laufen lassen. Dann wäre das nicht passiert. Nur so als Anregung.

Antworten