限制 SSH 密钥仅执行 rsync

限制 SSH 密钥仅执行 rsync

我正在使用 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 密钥前面设置了命令……很抱歉打扰你。

相关内容