restic (4) – rclone für sftp

Dies ist der vierte Artikel der Serie zu restic (1) – Backups done right! Wir haben bisher den sftp Server vorbereitet (restic (2) – sftp Server vorbereiten) und die Docker Software installiert (restic (3) – Docker auf Synology). Jetzt kümmern wir uns um den sftp Client und die rclone Software.

rclone installieren

Melde dich auf deiner Synology in einem Terminal an und werde root:

$ sudo su -

Installiere rclone

# curl https://rclone.org/install.sh | sudo bash

Erstelle einen Ordner rclone unter /volume1/docker, in dem wir die rclone Konfigurationsdateien speichern werden. Dieses Verzeichnis werden wir später dem restic Docker Container zur Verfügung stellen.

# mkdir /volume1/docker/rclone

Privaten Schlüssel einrichten

Kopiere den privaten Schlüssel certififcate.pem, den wir in restic (2) – sftp Server vorbereiten erstellt hatten, in die Datei /volume1/docker/certificate.pem. Du kannst die Datei mit cat anlegen und dann via copy-paste den Inhalt von deinem Windows Rechner übertragen. Mit Ctrl-D beendest du die Eingabe und speicherst die Datei.

# cat > /volume1/docker/certificate.pem
(paste content)
Ctrl-D

Stelle sicher, dass nur du den Inhalt des privaten Schlüssels sehen kannst:

# chmod 400 /volume1/docker/certificate.pem 

Teste den Schlüssel mit sftp am Domain Factory server. ssh-username ist dein Nutzername auf dem server und 1111111111.hostingkunde.de ist der Hostname.

# sftp -i /volume1/docker/certificate.pem ssh-username@1111111111.hostingkunde.de
Connected to 1111111111.hostingkunde.de.
sftp> 

Du siehst nun ohne Kennworteingabe den sftp> Prompt. Mit „quit“ beendest du sftp.

sftp> quit

rclone konfigurieren

Wir erstellen eine rclone Konfiguration, die wir in der Datei /volume1/docker/rclone/rclone.conf speichern:

# rclone config --config /volume1/docker/rclone/rclone.conf
2021/12/28 20:44:50 NOTICE: Config file "/volume1/docker/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q>

Mit „n“ erstellen wir die neue Konfiguration.

n/s/q> n
name>

Wir geben „domain-factory“ als Namen an.

name> domain-factory
Option Storage.
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value.
1 / 1Fichier
\ "fichier"
2 / Alias for an existing remote
\ "alias"
3 / Amazon Drive
\ "amazon cloud drive"
4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, SeaweedFS, and Tencent COS
\ "s3"
5 / Backblaze B2
\ "b2"
6 / Better checksums for other remotes
\ "hasher"
7 / Box
\ "box"
8 / Cache a remote
\ "cache"
9 / Citrix Sharefile
\ "sharefile"
10 / Compress a remote
\ "compress"
11 / Dropbox
\ "dropbox"
12 / Encrypt/Decrypt a remote
\ "crypt"
13 / Enterprise File Fabric
\ "filefabric"
14 / FTP Connection
\ "ftp"
15 / Google Cloud Storage (this is not Google Drive)
\ "google cloud storage"
16 / Google Drive
\ "drive"
17 / Google Photos
\ "google photos"
18 / Hadoop distributed file system
\ "hdfs"
19 / Hubic
\ "hubic"
20 / In memory object storage system.
\ "memory"
21 / Jottacloud
\ "jottacloud"
22 / Koofr
\ "koofr"
23 / Local Disk
\ "local"
24 / Mail.ru Cloud
\ "mailru"
25 / Mega
\ "mega"
26 / Microsoft Azure Blob Storage
\ "azureblob"
27 / Microsoft OneDrive
\ "onedrive"
28 / OpenDrive
\ "opendrive"
29 / OpenStack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
\ "swift"
30 / Pcloud
\ "pcloud"
31 / Put.io
\ "putio"
32 / QingCloud Object Storage
\ "qingstor"
33 / SSH/SFTP Connection
\ "sftp"
34 / Sia Decentralized Cloud
\ "sia"
35 / Sugarsync
\ "sugarsync"
36 / Tardigrade Decentralized Cloud Storage
\ "tardigrade"
37 / Transparently chunk/split large files
\ "chunker"
38 / Union merges the contents of several upstream fs
\ "union"
39 / Uptobox
\ "uptobox"
40 / Webdav
\ "webdav"
41 / Yandex Disk
\ "yandex"
42 / Zoho
\ "zoho"
43 / http Connection
\ "http"
44 / premiumize.me
\ "premiumizeme"
45 / seafile
\ "seafile"
Storage>

Als Storage Option wählen wir „33“ für sftp.

Storage> 33
Option host.
SSH host to connect to.
E.g. "example.com".
Enter a string value. Press Enter for the default ("").
host>

Dann geben wir den sftp Hostnamen ein:

host> 1111111111.hostingkunde.de
Option user.
SSH username, leave blank for current username, root.
Enter a string value. Press Enter for the default ("").
user>

Nun den Usernamen auf dem entfernten Host

user>  ssh-username 
Option port.
SSH port, leave blank to use default (22).
Enter a string value. Press Enter for the default ("").
port>

Als Port nehmen wir den default Wert und drücken direkt die Eingabetaste.

port>
Option pass.
SSH password, leave blank to use ssh-agent.
Choose an alternative below. Press Enter for the default (n).
y) Yes type in my own password
g) Generate random password
n) No leave this optional password blank (default)
y/g/n>

Das Kennwort bleibt leer, also der Default Wert „n“

y/g/n>
Option key_pem.
Raw PEM-encoded private key.
If specified, will override key_file parameter.
Enter a string value. Press Enter for the default ("").
key_pem>

Auch den Private Key lassen wir hier leer und drücken die Eingabetaste

key_pem>
Option key_file.
Path to PEM-encoded private key file.
Leave blank or set key-use-agent to use ssh-agent.
Leading ~ will be expanded in the file name as will environment variables such as ${RCLONE_CONFIG_DIR}.
Enter a string value. Press Enter for the default ("").
key_file>

Nun geben wir den Pfad zur Datei mit dem privaten Key an.

key_file> /volume1/docker/certificate.pem
Option key_file_pass.
The passphrase to decrypt the PEM-encoded private key file.
Only PEM encrypted key files (old OpenSSH format) are supported. Encrypted keys
in the new OpenSSH format can't be used.
Choose an alternative below. Press Enter for the default (n).
y) Yes type in my own password
g) Generate random password
n) No leave this optional password blank (default)
y/g/n>

Wir haben keine Passphrase, also gleich die Eingabtaste drücken.

y/g/n>
Option pubkey_file.
Optional path to public key file.
Set this if you have a signed certificate you want to use for authentication.
Leading ~ will be expanded in the file name as will environment variables such as ${RCLONE_CONFIG_DIR}.
Enter a string value. Press Enter for the default ("").
pubkey_file>

Wir brauchen keinen public Key hier. Eingabetaste drücken.

pubkey_file>
Option key_use_agent.
When set forces the usage of the ssh-agent.
When key-file is also set, the ".pub" file of the specified key-file is read and only the associated key is
requested from the ssh-agent. This allows to avoid Too many authentication failures for *username* errors
when the ssh-agent contains many keys.
Enter a boolean value (true or false). Press Enter for the default ("false").
key_use_agent>

Wir nutzen ssh-agent nicht, gleich die Eingabetaste drücken

key_use_agent>
Option use_insecure_cipher.
Enable the use of insecure ciphers and key exchange methods.
This enables the use of the following insecure ciphers and key exchange methods:
- aes128-cbc
- aes192-cbc
- aes256-cbc
- 3des-cbc
- diffie-hellman-group-exchange-sha256
- diffie-hellman-group-exchange-sha1
Those algorithms are insecure and may allow plaintext data to be recovered by an attacker.
Enter a boolean value (true or false). Press Enter for the default ("false").
Choose a number from below, or type in your own value.
1 / Use default Cipher list.
\ "false"
2 / Enables the use of the aes128-cbc cipher and diffie-hellman-group-exchange-sha256, diffie-hellman-group-exchange-sha1 key exchange.
\ "true"
use_insecure_cipher>

Wir benutzen keine unsicheren Cipher. So nehmen wir den Default Wert und drücken die Eingabetaste

use_insecure_cipher>
Option disable_hashcheck.
Disable the execution of SSH commands to determine if remote file hashing is available.
Leave blank or set to false to enable hashing (recommended), set to true to disable hashing.
Enter a boolean value (true or false). Press Enter for the default ("false").
disable_hashcheck>

Wir behalten die Prüfung des Hash Wertes bei. So nehmen wir den Default Wert und drücken die Eingabetaste

disable_hashcheck>
Edit advanced config?
y) Yes
n) No (default)
y/n>

Wir benötigen keine weiteren Details der Advanced Config. So nehmen wir den Default Wert und drücken die Eingabetaste

y/n>
--------------------
[domain-factory]
type = sftp
host = 1111111111.hostingkunde.de
user = ssh-username
port = 22
key_file = /volume1/docker/certificate.pem
--------------------
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d>

Wir bestätigen die Eingabe mit „y“ (default mit Eingabetaste)

y/e/d>
Current remotes:

Name Type
==== ====
domain-factory sftp

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q>

Wir beenden die Konfiguration mit „q“

e/n/d/r/c/s/q> q
#

Jetzt testen wir rclone mit dem test memory flags (Man page: „Load all the objects at remote:path into memory and report memory stats.“)

# rclone test memory --config=/volume1/docker/rclone/rclone.conf domain-factory
2021/12/28 21:07:00 NOTICE: 1 objects took -104 bytes, -104.0 bytes/object
2021/12/28 21:07:00 NOTICE: System memory changed from 16073736 to 16073736 bytes a change of 0 bytes

Es gabe keine Fehlermeldung. Alles ist gut. Wir können weiter machen und den restic Docker Container im nächsten Schritt konfigurieren (restic (5) – restic Docker Container).

Liste aller Artikel dieser Serie

restic (1) – Backups done right! – Einführung

restic (2) – sftp Server vorbereiten – Der Login muss mit einem SSL Zertifikat ohne Password möglich sein, damit restic über rclone darauf zugreifen kann.

restic (3) – Docker auf Synology – Installation des Docker containers

restic (4) – rclone für sftp – dieser Beitrag

restic (5) – restic Docker Container – Konfiguration und manueller Test des restic Docker Containers

restic (6) – restic Backup – Einrichten vom restic Backup

restic (7) – restic Restore – Testen der Wiederherstellung von Dateien aus restic Snapshots auf Windows 10.

restic (8) – rclone für OneDrive – Einrichtug des OneDrive Zugriffs für rclone

restic (9) – restic für OneDrive – OneDrive Konfiguration und manueller Test des restic Docker Containers

restic (2) – sftp Server vorbereiten

Dies ist der zweite Artikel der Serie zu restic (1) – Backups done right!

Bevor rclone eine sftp-Verbindung zum Domain Factory Server aufbauen kann, müssen die SSH Zertifikate erstellt werden.

Der Login zum sftp Server muss mit einem SSL Zertifikat ohne Password möglich sein, damit restic über rclone darauf zugreifen kann. In diesem Artikel beschreibe ich, wie man so ein Zertifikat erstellt und mit PuTTY auf Windows testen kann.

Melde dich auf dem sftp Server an. Ich gehe davon aus, dass die ssh Werkzeuge installiert sind.

Erstellen des Public/Private Key Paars

Erstelle den Unterordner .ssh/pem/ auf dem Server, wo du deine Datein später sichern willst:

$ cd .ssh
$ mkdir pem
$ cd pem

Dann erstelle das Zertifikat. Nennen wir es „certificate“. Die Passphrase bleibt leer. Das ist wichtig, damit der Key später mit rclone funktioniert.

$ ssh-keygen -t rsa -b 2048 -f certificate
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in certificate.
Your public key has been saved in certificate.pub.
The key fingerprint is:
SHA256:b1Dt6aizXC17uu4ht9N/YbRsVywr3e4wKYgapM3ye/scwk 653365@sh22197
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|         .       |
|        o . .   .|
|       o + o . o.|
|          =   + o|
|   E .   X     *.|
|  + = o   O.. o o|
| = =.=.+  .=.   .|
|. o ===o o   ... |
+----[SHA256]-----+

Das generierte Zertifikat besteht dann aus einem Public Key „certificate.pub“ und einem Private Key „certificate“.

$ ls
certificate  certificate.pub

Den Private Key bennen wir in certificate.pem um, damit er als solcher auch als Private Key im pem-Format erkennbar ist.

$ mv certificate certificate.pem
$ ls
certificate.pem  certificate.pub

Dann fügen wir den Public Key zu den erlauben Keys (authorized keys) hinzu, damit das Zertifkat für eine Anmeldung genutzt werden kann:

$ cat certificate.pub >> ~/.ssh/authorized_keys

Testen des Public/Private Key Paars

Kopiere den Private Key certificate.pem auf den Windows 10 Rechner. Ich habe dazu den Inhalt von certificate.pem angezeigt …

$ cat certificate.pem

… und mit copy-paste eine Textdatei auf meinem Windows Rechner mit demselben Namen erstellt.

Installiere die PuTTY-Suite auf dem Windows 10 Rechner.

PuTTY benötigt ein anderes Format ppk für den Private Key. Um die pem-Datei zu konvertieren starte das Program PuTTYgen

Klicke „Load“ und öffne den Private Key, den wir oben erstellt und auf den Windows Rechner kopiert haben.

Ändere den Dateityp auf „All Files (*.*)“ und wähle „certificate.pem“ aus:

Bestätige die „PuTTYgen Notice“ mit „OK“ und clicke auf „Save private key“, um das benötigte ppk-Format zu erzeuigen.

Bestätige die Warnung mit „Ja“, dass die Passphrase leer ist. Das muss so sein.

Speichere die Datei als „certificate.ppk“

Schließe den PuTTYgen Key Generator.

Starte PuTTY:

Unter „Connection > SSH >Auth“ füge den ppk Private Key hinzu, den wir eben erstellt haben:

Unter „Session“ füge den Hostnamen hinzu, Gib der Konfiguration einen Namen wie „Domain Factory“ und speichere sie mit „Save“.

Dann klicke auf „Open“, um die Session zu starten. Das Terminal öffnet sich und du bist direkt angemeldet:

Damit haben ein ein Public/Private Key Paar mit certificate.pub als Public Key und zwei Formate für den Private Key:

  • certificate.pem: Für die Nutzung von rclone auf der Synology (siehe den kommende Artikel restic (4) – rclone für sftp)
  • certificate.ppk: Für die Nutzung in PuTTY wie hier getestet.

Jetzt kannst du mit dem nächsten Artikel restic (3) – Docker auf Synology forfahren.

Liste aller Artikel dieser Serie

restic (1) – Backups done right! – Einführung

restic (2) – sftp Server vorbereiten – dieser Beitrag

restic (3) – Docker auf Synology – Installation des Docker containers

restic (4) – rclone für sftp – Installation und Einrichtung von rclone für sftp

restic (5) – restic Docker Container – Konfiguration und manueller Test des restic Docker Containers

restic (6) – restic Backup – Einrichten vom restic Backup

restic (7) – restic Restore – Testen der Wiederherstellung von Dateien aus restic Snapshots auf Windows 10.

restic (8) – rclone für OneDrive – Einrichtug des OneDrive Zugriffs für rclone

restic (9) – restic für OneDrive – OneDrive Konfiguration und manueller Test des restic Docker Containers

restic (1) – Backups done right!

Im Juni 2021 wurde im Chaosradio Podcast in der Folge CR270 Daten archivieren, wiederherstellen und löschen die Backupsoftware restic vorgestellt. „Backups done right!“ ist der restic Slogan. Die Vorstellung im Podcast hat mich dazu inspiriert, meine Daten endlich vernünftig auf entfernten System zu sichern und dazu restic zu nutzen.

Zu Hause habe ich einen Windows 10 PC. Meine Daten sind auf einer Synology DS220 mit gespiegelten Platten (RAID 1). Zusätzlich nutze ich die Synology Cloud Sync Software, um meine Daten auf Dropbox und Microsoft OneDrive zu synchroniseren.

Aber alle diese Maßnahmen ersetzen kein externes Backup, weil ein Verlust der Daten zum Beispiel durch eine Ransomware Verschlüsselung durch die Spiegelungen auf allen Medien passiert. Wenn auf einer Seite eine Datei gelöscht wird, ist sie überall gelöscht. In Microsoft OneDrive kann man alte Dateiversionen wiederherstellen, aber ich bevorzuge ein separates Backup.

restic bietet sich an, weil es freie Software ist, die seit einigen Jahren ausgereift ist. In den folgenden Artikeln werde ich beschreiben, wie ich mit restic die Daten von meiner Synology auf externen Cloud Speichern sichere. Die beiden Beispiele sind ein sftp Server von Domain Factory und Microsoft OneDrive.

restic wird auf Synology in einem Docker container des Typs lobaro / restic-backup-docker laufen und rclone verwenden, um auf die jeweiligen Backup Server zuzugreifen. Für den ersten Teil mit dem Domain Factory sftp Server sieht das so aus:

Ich werde dazu mehrere Artikel veröffentlichen. Weiter geht es mit restic (2) – sftp Server vorbereiten .

Liste aller Artikel dieser Serie

restic (1) – Backups done right! – dieser Beitrag

restic (2) – sftp Server vorbereiten – Der Login muss mit einem SSL Zertifikat ohne Password möglich sein, damit restic über rclone darauf zugreifen kann.

restic (3) – Docker auf Synology – Installation des Docker containers

restic (4) – rclone für sftp – Installation und Einrichtung von rclone für sftp

restic (5) – restic Docker Container – Konfiguration und manueller Test des restic Docker Containers

restic (6) – restic Backup – Einrichten vom restic Backup

restic (7) – restic Restore – Testen der Wiederherstellung von Dateien aus restic Snapshots auf Windows 10.

restic (8) – rclone für OneDrive – Einrichtug des OneDrive Zugriffs für rclone

restic (9) – restic für OneDrive – OneDrive Konfiguration und manueller Test des restic Docker Containers