我正在使用 rsync 为我的服务器制定备份策略。我遵循这教程并限制 SSH 密钥的使用,我制作了这个validate-rsync.sh
脚本,我也可以毫无问题地运行:
#!/bin/sh
case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected"
;;
*\(*)
echo "Rejected"
;;
*\{*)
echo "Rejected"
;;
*\;*)
echo "Rejected"
;;
*\<*)
echo "Rejected"
;;
*\>*)
echo "Rejected"
;;
*\`*)
echo "Rejected"
;;
*\|*)
echo "Rejected"
;;
rsync\ --server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected"
;;
esac
该文件的开头authorized_keys
如下所示:
command="/home/$USERNAME/validate-rsync.sh" ssh-rsa....
据我所知,我不应该能够通过 SSH 远程连接(从备份所在的服务器),然后执行mkdir xx
。但不知何故,我仍然可以做到这一点。可能是什么问题?
我很感激任何帮助。
答案1
authorized_keys
您可以通过编辑服务器上的文件中的公钥来强制使用 rsync ,如下所示:
command="/usr/bin/rsync -wo /path/to/data",no-port-forwarding ssh-rsa ....
答案2
我自己搞清楚了。我在错误的 SSH 密钥前面设置了命令……很抱歉打扰你。