Private-Public Key-Pair for rsync
Folgendes HOWTO stand Pate fuer diese Prozedur:
SSH-with-Keys-HOWTO
Einsatz-Szenario: Von Server SourceServer soll per rsync regelmaessig eine Spiegelung auf den Server BackupServer erfolgen. Dieser rsync Task soll ueber SSH transferieren und z.B. per cron startbar sein. Aus letzterer Randbedingung ergibt sich die Notwendigkeit, dass keine Passwortabfrage eine Benutzer-Interaktion noetig macht. Aus diesem Grunde wurde auf das Private/Public Key-Feature von SSH zurueckgegriffen. Das oben verlinkte HOWTO erklaert noch einige Hintergruende zu der Thematik und geht auch auf SSH Version 1 ein, auf derlei wird hier verzichtet.
Folgende Schritte sind durchzufuehren:
1) 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 uebertragen wir den erstellten public key auf den BackupServer. Dazu greifen wir auf SCP zurueck, an dieser Stelle muss der Login noch ganz gewohnt ueber die Eingabe des Passworts erfolgen.
2) SCP Uebertragung:
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 ueber SSH statt und muss wieder ueber Eingabe des Passworts erfolgen.
3) 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 geloescht werden.
Abschliessend kann man die Verbindung nun testen. Dazu loggen wir uns aus und nun erneut ein (ohne Verwendung eines Passworts).
4) 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 gewoehnlicher rsync Befehl entsprechend verwendet werden:
SourceServer:/# rsync -avz -e "ssh -i /home/myuser/rsync/SourceServer-rsync-key" /mnt/myimportantdata/ mybackupuser@BackupServer:/mnt/myimportantdata/