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

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

我想设置一个允许sftprsync(通过 ssh)的公共存储服务器。我已将其与chrootjail 和配合使用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 环境。

相关内容