我正在设置基于 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 连接的行为正如我所希望的那样:组被限制的目录显示为根目录。