如何设置公共rsync和sftp服务器

我想设置一个公共存储服务器,允许sftprsync (通过ssh)。 我已经与chroot jail和rssh一起工作了。 当用户使用sftp连接到服务器时,他可以读取chroot中的所有文件(如/ lib和/ bin)。 同样与rsyncrsync --list-only user@server:/ )。 我想有一个设置,用户只能查看和不离开他的主目录。

另一个要求是我不想为每个用户设置一个chroot环境。

我已经尝试了sshd_config的chrootdirectory和forcecommand语句,这对sftp非常有效,但是不允许任何rsync

对于sftp部分,您可以在sshd_config中将指令Subsystem sftp internal-sftp与ChrootDirectory一起查看。

您是否尝试在接受的密钥上尝试安装chroot'd rsync ?

摘抄:

授予ssh访问权限并不一定意味着完全的shell访问,例如,这显示了如何使用ssh authorized_keys文件来允许通过rsync进行备份,同时将可用命令限制在rsync接收器。

像这样,在你的authorized_keys文件中:

 command="/usr/bin/rsync --server -a . /tmp/user1" ssh-rsa ... user1 command="/usr/bin/rsync --server -a . /tmp/user2" ssh-rsa ... user2 

还有两个博客文章的指针。 第一个解释如何限制SSH到rsync:

第二个你不想要的,build立一个chroot环境。

就我个人而言,我会去chroot,并设置$USER/{bin|lib}作为绑定挂载。 这样我就可以在每个用户的chroot上维护一个chroot环境。