我正在尝试为远程服务器设置基于 ssh 密钥的登录,以便每天进行 rsnapshot。我使用的密钥是普通用户密钥,但它显然没有 root 访问权限,因此当 rsnapshot 使用用户密钥连接到服务器时,例如 /root 将不会被备份。以最简单的方式设置 rsnapshot 的最佳方法是什么?我应该创建一个普通的备份用户,并将其添加到wheel组并完成它吗?
答案1
一种可能不那么简单的方法是连接为,root
但限制用于连接的密钥仅运行rsync
;的特定调用。这需要一个/root/.ssh/authorized_keys
类似于以下内容的条目
from="192.0.2.*",command="/root/limit-rsnap" ssh-rsa AAAAB3N...
这限制了备份的预期来源(这可能并不适合所有设置),更重要的是在连接到仅允许/root/limit-rsnap
特定调用的系统上的脚本中:rsync
#!/bin/bash
shopt -s extglob
test -n "$SSH_ORIGINAL_COMMAND" || exit 1
case "$SSH_ORIGINAL_COMMAND" in
'rsync --server --sender -'+([vnlHogDtprRxe.isfLS])' --numeric-ids . '*)
RSYNCPATH="${SSH_ORIGINAL_COMMAND#rsync --server --sender -+([vnlHogDtprRxe.isfLS]) --numeric-ids . }"
test -e "$RSYNCPATH" && exec $SSH_ORIGINAL_COMMAND || exit 1
;;
*)
exit 1
;;
esac