"PermitRootLogin forced-commands-only" requer que todas as conexões, via SSH como raiz, precisem usar autenticação de chave pública e que um comando seja associado a essa chave (como 'validate-rsync').
Se você quiser fazer login como root, mas apenas com as chaves, use:
PermitRootLogin = without-password
Para restringir o rsync a uma chave ssh definida, você pode especificar em suas authorized_keys:
from="<ip>",command="/usr/local/sbin/validate-rsync" ssh-dss AAAAZ5Hbl......
E salve este wrapper em: / usr / local / sbin / validate-rsync
#!/bin/sh
case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected"
;;
*\(*)
echo "Rejected"
;;
*\{*)
echo "Rejected"
;;
*\;*)
echo "Rejected"
;;
*\<*)
echo "Rejected"
;;
*\'*)
echo "Rejected"
;;
*\|*)
echo "Rejected"
;;
rsync\ --server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected"
;;
esac
Existe um script um pouco mais complicado enviado com o rsync para fazer o mesmo, link