我想设置一个公共存储服务器,允许sftp和rsync (通过ssh)。 我已经与chroot jail和rssh一起工作了。 当用户使用sftp连接到服务器时,他可以读取chroot中的所有文件(如/ lib和/ bin)。 同样与rsync ( rsync --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环境。