我正在尝试在 Windows 上设置 OpenSSH 以提供 SFTP 站点。我在用户安全设置方面遇到了一些问题。
以下是我创建用户的基本步骤:
- 在主机上创建一个新用户
- 将用户添加到 openssh passwd 文件,调整后的 cygwin 文件路径指向客户端的主文件夹(例如:/cygdrive/e/homefolders/username)
- 允许用户对其文件夹进行读/写访问
我遇到的问题是用户需要对 OpenSSH 程序文件夹具有执行权限才能登录。我发现我可以禁用对特定文件夹的访问,例如“etc”,但我担心我必须在这里提供权限。使用 FileZilla 时,我会看到一个文件夹层次结构“/cygdrive/e/homefolders/username”,并且可以浏览“/”到具有读取访问权限的文件夹。
在此设置中,我应该使用特定的策略来确保适当的安全性吗?我可能需要提供执行权限但仅此而已的特定文件或文件夹?我想完全锁定除了对他们自己的文件夹的读/写访问权限之外的所有内容,但这似乎是不可能的。
经过进一步研究,我发现我在下面使用内置 chroot 功能的原始建议在 cygwin 下不受支持。
您可能会更好地寻找其他替代方案。也许是 webdav,也许是一个 ftps 服务器(filezilla),或者也许是其他专有的sftp 服务器之一。
如果您必须使用 cygwin OpenSSH 执行此操作,可用的选项是使用 scponly shell。这是描述该过程的pdf 。
不确定您在 Windows 上使用的是哪个版本的 openssh。但听起来你想设置一个 sftp chroot。
您可能想查看这些相关问题。
你想要 SFTP 有多糟糕?Cygwin 有点老套,而适用于 Windows 的 OpenSSH 已经过时了。我的方法是使用 WebDAV 来解决您遇到的大部分问题:
IIS 支持它,即使在 server 2000 附带的版本上也是如此。
这是 OpenSSH priv-sep 设置的一部分。
这个(PDF)是一篇关于它和其他 OpenSSH 安全特性的好论文
简而言之,主守护进程切换到非特权进程,试图阻止程序其余部分中的任何漏洞允许“root”访问。
您可能还想使用类似设置的 chroot来完全阻止用户 homedir 之外的访问。
我也会支持 webdav 的建议,即使我已经放弃了它在 OS X 客户端以外的任何东西上的工作。