如何防止 SFTP 用户看到其他目录?

如何防止 SFTP 用户看到其他目录?

我正在设置基于 Windows Server 2019 的 Web 服务器。我们的一个供应商需要能够上传文件。我有

  • 添加了 sshd
  • 为他们创建了一个登录名
  • 为该登录名创建一个组
  • 将该登录添加到组,并从所有其他组中删除该登录
  • 创建上传目录
  • 鉴于该组调整该目录中的权限
  • 将该行添加ForceCommand internal-sftp -d "C:\inetpub\ftproot\Upload"匹配该团体的指令sshd_配置

到目前为止一切顺利。该登录可以通过 SFTP 连接到该框,并且会话会自动在目录中开始上传,它可以从那里上传和下载文件。但我不知道如何阻止它查看其他目录的内容。只需从组中删除登录即可用户没有效果。拒绝该团体列表在封闭的根目录目录导致无法连接(身份验证失败)。我在 Google 搜索了一个小时后发现的唯一建议是设置一个值ChrootDirectory,但这导致无法通过 SFTP 或 SSH 进行登录连接(服务显然无法响应)。我对 Windows 服务器还很陌生,而且我没有主意。显然一定有一个正确的方法来做到这一点 - 有人能给我指出正确的方向吗?

[更新]

此框正在运行OpenSSH 7.7:

> ssh -V
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5

当我将此行添加到匹配针对 sftp 组的指令:

ChrootDirectory "C:\inetpub\ftproot\Upload"

然后尝试以任何用户身份进行连接,无论是否在该组中,都会出现以下情况sshd.log(显然 pid、端口和时间戳会有所不同):

3332 2021-08-17 12:04:24.931 Failed password for invalid user sftpuser from XX.XX.XX.XX port 34240 ssh2

答案1

这里的关键似乎是不是在这一行中使用引号括起路径:

ChrootDirectory C:\inetpub\ftproot\Upload

做出该更改后,建立 SFTP 连接的行为正如我所希望的那样:组被限制的目录显示为根目录。

相关内容