von https://velt.de/blog/sven/rsync-mit-restricted-sshkeys
Empfohlen wird pro Befehl ein eigener key, hier wird id_ed25519 als Keyname verwendet. Erstellen z.B. mit
ssh-keygen -b 256 -t ed25519 -C "für restricted rsync" -f ~/.ssh/id_ed25519-rsync_restricted
Problem bei rsync: Auf der Empfängerseite kommt im Empfangsbefehl ein Zufalls-String vor, z.B.
rsync --server -logDtprze.abcfxCIvu --delete . xyz/abc
Dieser string muss in der .ssh/authorized keys korrekt gesetzt sein, damit das restricted command funktioniert.
Um ihn zu ermitteln, muss man ein Hilfsskript verwenden (|thomas krenn wiki) ~/bin/logssh.sh auf dem Zielsystem
#!/bin/sh
if [ -n "$SSH_ORIGINAL_COMMAND" ]
then
echo "`/bin/date`: $SSH_ORIGINAL_COMMAND" >> $HOME/ssh-command-log
exec $SSH_ORIGINAL_COMMAND
fiund für einen Test in die authorized_keys mit korrektem Schlüsselnamen und pubkey eintragen:
command="/home/xxxx/bin/logssh.sh" ssh-ed25519 AAAAC3N...
Rsync-Aufruf vom Client
rsync -e 'ssh -i ~/.ssh/id_ed25519-rsync_restricted' -avz test.txt 192.168.2.205:/tmp
ACHTUNG als Ziel-Hostnamen kein Alias verwenden, der in der .ssh/config hinterlegt ist, sonst wird der dort hinterlegte Schlüssel verwendet
Am SSH-Server scheint das über SSH ausgeführte Kommando in der Log-Datei
:~$ cat ~/ssh-command-log
Wed Apr 30 15:10:54 CEST 2014: rsync --server -vlogDtprze.iLsf . /tmp
Diese Zeichenkette wird dann in den command= Teil einer Zeile in der ~/.ssh/authorized_keys geschrieben