配置SSH服务器以实现SFTP和SCP访问
入门的这一部分假设:
- 你最近安装了Bitvise SSH服务器。
- 你在服务器同一台电脑上安装了Bitvise SSH客户端,以帮助初步设置。
- 你已经了解过SSH服务器在Windows账户和虚拟账户中的应用。
- 你想配置SSH服务器通过SFTP和SCP提供文件传输访问。
支持的协议
SSH服务器支持文件传输协议SFTP和SCP。这两个都运行在SSH上。
SSH服务器目前不支持纯FTP,即FTPS(基于TLS/SSL的FTP)。
我们计划在未来版本中支持 FTPS。
创建一个虚拟账户
首先,打开Easy SSH服务器设置并创建一个虚拟账户:

对于虚拟账户,默认设置已经是:
- 允许文件传输。
- 不要允许shell访问(或执行请求)。
- 不要允许端口转发。
主要需要配置的是虚拟账户名称、密码和文件传输的根目录。
防止终端壳层的无限制访问
重要的是,应对服务器文件系统有有限访问权限的账户,不能被授予提供命令提示符、PowerShell、bash 或其他开放式终端 shell 访问的 shell 访问类型。
受限制用户可以获得访问BvShell的权限。这是SSH服务器内置的shell,尊重用户的虚拟文件系统配置。
当用户被授予访问不同shell(非BvShell)时,这些其他shell是第三方应用程序,不知道SSH服务器的虚拟文件系统。他们不尊重诸如限制根目录等设置。
配置为无壳访问类型的用户无法通过终端SSH客户端(如PuTTY)连接。不过,他们可以连接到文件传输客户端。
启动SSH服务器以创建BvSsh_VirtualUsers
这个例子使用了一个带有默认安全上下文的虚拟账户。默认的安全上下文是由SSH服务器创建的Windows账户BvSsh_VirtualUsers。该账户在您:
- 最后创建一个虚拟账户。
- 启动SSH服务器时至少创建一个虚拟账户。
因此,为了确保BvSsh_VirtualUsers账户存在,启动SSH服务器并关闭它。
如果你找不到BvSsh_VirtualUsers账户,可以查看SSH服务器使用常见问题中的Q440和Q460。
为SFTP创建一个根目录
我们将展示使用虚拟账户的设置,SSH客户端不打算访问服务器的整个文件系统。为此,我们需要一个 SFTP 或 SCP 客户端能够访问的目录。我们将使用Windows文件资源管理器创建目录C:\SftpRoot:

检查Windows权限
这个例子使用了一个带有默认安全上下文的虚拟账户。因此,我们需要确保Windows账户BvSsh_VirtualUsers能够访问我们创建的SFTP根目录的文件和子目录:

Windows 账户 BvSsh_VirtualUsers 是用户组成员,但该组没有 Windows 文件系统权限写入 C:\SftpRoot。我们需要添加权限以允许虚拟账户上传。
配置Windows权限
我们仍然使用Windows文件资源管理器,使用高级安全设置将C:\SftpRoot内容授予Windows文件系统权限给BvSsh_VirtualUsers账户:

我们已经确定了想要添加权限的账户。我们配置它们如下:
这将使虚拟账户能够完全控制C:\SftpRoot目录中的文件和子文件夹;但不能直接覆盖父目录本身。
也可以利用该界面授予更细致的权限。
为了控制用户对文件和目录的访问,您可以使用任意组合的Windows文件系统权限;挂载点权限在高级SSH服务器设置中配置;或者两者兼有。
使用虚拟账户连接
我们现在将使用之前安装在同一台电脑上的SSH客户端来验证虚拟账户的运行情况:

我们使用之前创建的同一个localhost SSH客户端配置文件。我们输入新用户名和密码,然后点击登录。在这种情况下,我们使用了选项标签关闭了SFTP和终端窗口的自动打开。因此,当SSH客户端连接时,我们点击新的SFTP窗口。
如果到目前为止一切顺利,SFTP窗口会打开。
执行测试转移
我们用记事本在桌面上创建了一个测试文件,名为“测试File.txt”。我们将将此文件上传到服务器:

如果我们正确配置了Windows文件系统权限,上传成功:
验证有限访问权限
我们已经确认SFTP是有效的。现在,确保用户无法访问终端壳层:

我们还可以尝试配置服务器到客户端(S2C)端口转发规则,以验证服务器是否允许:
要对客户端到服务器端口转发(C2S)进行同样检查,不仅需要配置规则,还需要尝试连接。
原创文章,作者:云东方,如若转载,请注明出处:https://www.yundongfang.com/Yun1056.html


