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

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

换句话说,它应该是一个“仅上载”服务在ssh协议上工作。 当然,这意味着客户端总是会有一种方法来知道在服务器上是否已经有一个给定名字的文件,只要文件内容不能被检索就没关系。

我们怎么能实现这一点,可能使用已经build立的软件在普通分布?

我们当前的部分解决scheme利用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选项

所以我们只有一半,这不是一个实际的,完整的解决scheme。