搭建一个SFTP服务器可以提供一个安全的方式来传输文件,特别是在Windows环境中。以下是通过使用OpenSSH工具在Windows上设置SFTP服务器的一个简单指南:

第一步:安装 OpenSSH 服务

1. 确保你的 Windows 版本兼容OpenSSH服务器(大多数Windows 10版本和Windows Server从某个更新开始都预装有OpenSSH工具)

windows搭建sftp服务器  第1张

2. 开启OpenSSH服务器服务

打开`控制面板>程序>打开或关闭Windows 功能`

在可用的组件中寻找并勾选 `OpenSSH服务器` ,然后点击"确定"

3. 开启Windows PowerShell (Admin) 权限运行以下命令以手动启动OpenSSH服务:

powershell

AddWindowsCapability Online Name OpenSSH.Server~~~~0.0.1.0

windows搭建sftp服务器  第2张

StartService sshd

并确认该服务会随系统自动启动:

powershell

SetService Name sshd StartupType 'Automatic'

4. 配置防火墙,以便外部请求可以与SFTP服务器进行通信。

windows搭建sftp服务器  第3张

你可以通过PowerShell添加以下规则来开启端口(假设你想使用的端口为22,这是最常见的默认SFTP端口):

powershell

NewNetFirewallRule Name sshd DisplayName 'OpenSSH Server (sshd)' Enabled True Direction Inbound Protocol TCP Action Allow LocalPort 22

windows搭建sftp服务器  第4张

第二步:创建一个 SFTP 用户

创建用于SFTP的独立用户的步骤:

windows搭建sftp服务器  第5张

powershell

NewLocalUser "SFTPUser" NoPassword

AddLocalGroupMember Group "Remote Desktop Users" Member "SFTPUser"

windows搭建sftp服务器  第6张

注意,根据需要可能还需添加此用户到其他特定的权限组或者分配专用文件夹。你也可以通过以下方式为用户限定目录:

powershell

$HomeFolder = "D:\SFTPFolder\"

NewItem $HomeFolder ItemType Directory Force | OutNull

SetItemProperty Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S15212150 Name ProfileImagePath Value $HomeFolder Force

windows搭建sftp服务器  第7张

注意:上述SFTPSample命令示例中的S15212150可能是示例值,需要替换为你用户的SID,可以通过如下方式查询:

powershell

gwmi win32_userprofile | where{$_.localpath.tostring() eq $path}|Select expand sid

windows搭建sftp服务器  第8张

这里$Path应替换为你用户主文件夹的路径。

第三步:配置 SSH 配置文件来限制该用户只可以进行 SFTP

编辑 SSHD 的配置文件通常位于`C:\ProgramData\ssh\sshd_config`:

text

Subsystem sftp /usr/sbin/sftpserver

Match Group SFTP

windows搭建sftp服务器  第9张

X11Forwarding no

AllowTcpForwarding no

ChrootDirectory C:\Users\SFTPUser\

ForceCommand internalsftp

windows搭建sftp服务器  第10张

此部分配置保证SFTP用户的某些特定行为(比如登录后只能执行内部 SFTP 相关指令而不可登陆交互式命令等)并锁定用户的根访问目录为所指定的位置。

注意`ChrootDirectory`需要指向实际存在的目录。

重启 SSH 服务使设置生效:

powershell

RestartService sshd

以上就基本完成了Windows下的SFTP服务器搭建工作了,你可以使用任何支持SFTP连接的应用来尝试连接它,例如:WinSCP等。