仅接受通过 SSH 上传的新文件

仅接受通过 SSH 上传的新文件

我们希望通过 OpenSSH 在一些 Linux 主机之间发送文件,但我们不希望客户端能够列出/检索/修改服务器上的现有文件。

换句话说,它应该是一个通过 ssh 协议工作的“仅上传”服务。当然,这意味着客户端总有办法知道服务器上是否已经有给定名称的文件,只要无法检索文件内容,那就没问题。

我们如何才能实现这一点,可能使用常见发行版中现有的软件吗?

答案1

我们当前的部分解决方案利用rsync --ignore-existing并强制在服务器端使用如下(不可写)命令行~/.ssh/authorized_keys

command="rsync --server -e.Ls --ignore-existing . ." ssh-ed25519 ABCDEDFGfoobarbaz user@host
  • 足以阻止普通用户下载远程文件
  • 如果客户端使用rsync -r --ignore-existing <single_file> user@server:而不是rsync -r --ignore-existing <whole_directory> user@server:
  • 不能 100% 确定是否存在其他缺陷或规避预期用途的方法
  • 额外的好处:rsync 无处不在,并且有方便的--bwlimit选项

所以我们只完成了一半,这并不是一个真正的、完整的解决方案。

相关内容