SSH nur mit git und rsync

Es ist mal wieder soweit: Sein ganzes Backup-Gedöns überdenken und versuchen es ein wenig anzupassen. Es gibt da einen kleinen vServer denn ich seit neustem administrieren soll. Keine Backups... war ja klar. Also was nimmt man da nun? Ich benutze seit Jahren ein zusammengefrickeltes Shell-Script mit dem Namen "DoTheBackup". Seit ein paar Monaten habe ich versucht es mit Python in was Besseres zu gießen. Rausgekommen ist dies hier. Bis jetzt setze ich da voll auf rsync und git. Und wenn man den Remote-Host auf den man die Backups schieben möchte ein wenig einschränken möchte, und zwar auf genau diese beiden Kommandos, war das für mich nicht so einfach. Es gibt da viele Möglichkeiten. Vor allem kann man seine /home/backupuser/.ssh/authorized_keys auf ein Kommando begrenzen. Man nutzt dafür commando="rsync foo bar" vor dem Publickey. Wie gesagt: Ein Kommando. Nun kann man sich ein Wrapper-Script bauen. Habe ich versucht und bin an git gescheitert. Viel und lange gegoogelt und kaum etwas gefunden. Bis auf diese Dokumentation von git selber. git-shell hatte ich erstmal aussenvor gelassen weil ich bis jetzt dachte es beschränkt sich ganz auf git. Falsch!

Den Shell des Backupusers auf git-shell setzen.

In [ ]:
%%bash
sudo chsh -s $(which git-shell) backupuser

Man legt das Verzeichnis git-shell-commands in das Homeverzeichnis des Backup-Users.

In [ ]:
%%bash
mkdir /home/backupuser/git-shell-commands

Nun kann man Symlinks in dieses Verzeichnis legen mit den Kommandos die der Backup-User über SSH ausführen darf.

In [ ]:
%%bash
cd /home/backupuser/git-shell-commands
ln -s $(which rsync) rsync

Und zack feddich...