使用authorized_keys限制rsync
业务场景:
server A
经常需要使用rsync将文件同步至server B
- rsyncd 的配置稍显复杂,不想在
server B
上配置rsyncd - 出于安全性的考虑,不能完全开放
server A
至server B
的ssh权限
解决方案:
配置
server B
上的~/.ssh/authorized_keys
, 允许server A
使用ssh连接至server B
, 但是限制只能使用rsync命令,并且限制rsync上传的目录
-
在
server A
上创建用于专门用于rsync验证的ssh密钥ssh-keygen -C rsync_key -f ./rsync_key -P '' -N ''
-
在
server B
下载 rrsync 存放至$HOME/bin/rrsync
-
在
server B
的~/.ssh/authorized_keys
中加入以下内容,行尾的部分即是第一步生成的rsync_key.pub
的内容:command="$HOME/bin/rrsync /data/work/package/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAA**content of rsync_key** rsync_key
其中
/data/work/package/
表示限制rsync命令上传到指定的目录。 -
在
server A
上可以通过下面的rsync命令把local_name
上传至server B
的/data/work/package/remote_name
来传输文件:rsync -av -e 'ssh -o StrictHostKeyChecking=no -i /path/to/rsync_key' local_name user@serverB:remote_name
参考链接:
Last modified on 2015-09-01