我想设置一个允许sftp
和rsync
(通过 ssh)的公共存储服务器。我已将其与chroot
jail 和配合使用rssh
。当用户使用 连接到服务器时,sftp
他可以读取 chroot jail 中的所有文件(如 /lib 和 /bin)chroot
。对于rsync
( rsync --list-only user@server:/
) 也是如此。我希望有一个设置,让用户只能查看而不能离开他的主目录。
另外一个要求是我不想为每个用户设置一个 chroot 环境。
我已经尝试过 chrootdirectory 和 forcecommand 语句,sshd_config
它们效果很好sftp
但不允许任何rsync
。
答案1
对于 sftp 部分,您可以查看指令子系统 sftp internal-sftp与 sshd_config 中的 ChrootDirectory 一起。
答案2
您是否尝试过按照建议在接受的键上设置命令尝试设置 chroot 的 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:
第二个您不想要的是,设置 chroot 环境。
我个人会选择 chroot 并设置$USER/{bin|lib}
为绑定挂载。这样,我将维护挂载在每个用户的 chroot 上的单个 chroot 环境。