Private Public Key Pair für rsync

Folgendes HOWTO stand Pate fuer diese Prozedur: SSH-with-Keys-HOWTO

Einsatz-Szenario: Von Server SourceServer soll per rsync regelmäßig eine Spiegelung auf den Server BackupServer erfolgen. Dieser rsync Task soll über SSH transferieren und z.B. per cron startbar sein. Aus letzterer Randbedingung ergibt sich die Notwendigkeit, dass keine Passwortabfrage eine Benutzer-Interaktion nötig macht. Aus diesem Grunde wurde auf das Private/Public Key-Feature von SSH zurückgegriffen. Das oben verlinkte HOWTO erklärt noch einige Hintergründe zu der Thematik und geht auch auf SSH Version 1 ein, auf derlei wird hier verzichtet.

Folgende Schritte sind durchzuführen:

key-pairs erstellen

SourceServer:/home/myuser/rsync# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): /home/myuser/rsync/SourceServer-rsync-key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/myuser/rsync/SourceServer-rsync-key.
Your public key has been saved in /home/myuser/rsync/SourceServer-rsync-key.pub.
The key fingerprint is:
aa:bb:cc:dd:ee:ff:00:11:22:33:44:55:66:77:88:99 myuser@SourceServer
The key's randomart image is:
+--[ DSA 1024]----+
| |
| |
| |
| . |
| . . S . |
| o + o + o |
| . +.+ . o E |
|oo oo.. + + + |
|+.+.o =.o. . |
+-----------------+

Anschliessend übertragen wir den erstellten public key auf den BackupServer. Dazu greifen wir auf SCP zurück, an dieser Stelle muss der Login noch ganz gewohnt über die Eingabe des Passworts erfolgen.

SCP Übertragung

scp /home/myuser/rsync/SourceServer-rsync-key.pub mybackupuser@BackupServer:/home/mybackupuser/
mybackupuser@BackupServer's password:
SourceServer-rsync-key.pub 100% 603 0.6KB/s 00:00

Nun loggen wir uns auf dem BackupServer ein und binden das Keyfile korrekt ein. Der Login findet wieder über SSH statt und muss wieder über Eingabe des Passworts erfolgen.

Public Key auf BackupServer einbinden

ssh -l mybackupuser BackupServer
mybackupuser@BackupServer's password:
Welcome to BackupServer!
> cd /home/mybackupuser/
> mkdir .ssh
> chmod 700 .ssh
> mv SourceServer-rsync-key.pub .ssh/
> cd .ssh
> touch authorized_keys
> chmod 600 authorized_keys
> cat SourceServer-rsync-key.pub >> authorized_keys

Das File SourceServer-rsync-key.pub kann laut dem oben verlinkten HOWTO nun gelöscht werden.

Abschließend kann man die Verbindung nun testen. Dazu loggen wir uns aus und nun erneut ein (ohne Verwendung eines Passworts).

Verbindung testen

SourceServer:/home/myuser/rsync# ssh -i /home/myuser/rsync/SourceServer-rsync-key -l mybackupuser BackupServer
Welcome to BackupServer!
>

Voila! :)

Nun kann ein ganz gewöhnlicher rsync Befehl entsprechend verwendet werden:

SourceServer:/# rsync -avz -e "ssh -i /home/myuser/rsync/SourceServer-rsync-key" /mnt/myimportantdata/ mybackupuser@BackupServer:/mnt/myimportantdata/