小编Xyk*_*n42的帖子

SFTP 与 chroot 取决于连接用户的公钥

我想构建一个服务器(运行 Debian 或 FreeBSD),通过 sshfs 接收来自不同客户端的备份。每个客户端应该能够读取和写入自己的备份数据,但不能读取和写入任何其他客户端的数据。

我有以下想法:每个客户端通过公钥身份验证连接到 backup@backupserver.local。用户备份有一个特殊的 authorized_keys 文件,如下所示:

command="internal-sftp" chroot="/backup/client-1/data" ssh-rsa (key1)
command="internal-sftp" chroot="/backup/client-2/data" ssh-rsa (key2)
command="internal-sftp" chroot="/backup/client-3/data" ssh-rsa (key3)
etc...
Run Code Online (Sandbox Code Playgroud)

这样做的好处是我不需要为每个客户端使用单独的用户,而且我可以轻松地使用脚本自动生成 authorized_keys 文件。

只有一个问题:chroot=...不起作用。OpenSSH 的authorized_keys 文件似乎没有ChrootDirectory 的等效文件(它在/etc/ssh/sshd_config 中工作,无论是全局还是在Match User 块中)。

是否有一种相当简单的方法可以使用 OpenSSH 完成我想要的操作?也许command=...以巧妙的方式使用指令?或者,是否还有其他 SFTP 服务器可以执行我想要的操作?

编辑:为了更清楚我想要实现的目标:我希望多个客户端能够在我的服务器上存储文件。每个客户端都不能看到任何其他客户端的文件。而且我不想让我的服务器有几十个用户帐户,所以我想要一个易于管理的解决方案,让客户共享一个用户帐户,但仍然无法访问彼此的文件。

linux freebsd ssh sftp ssh-keys

9
推荐指数
2
解决办法
2948
查看次数

标签 统计

freebsd ×1

linux ×1

sftp ×1

ssh ×1

ssh-keys ×1