LOGO 首页 OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 技术文档 其他文档  
 
网站管理员

[点晴永久免费OA]Windows 原生 OpenSSH 完整搭建 SFTP 服务器方案(适配:端口 22、仅 SFTP、Chroot 隔离、密码登录)

admin
2026年11月3日 17:28 本文热度 177

环境:Win10 1809+/Win11/Windows Server2019+;FlashFXP 直接用 SFTP over SSH 连接 目标:账号只能传文件,禁止 SSH 命令行登录,每个用户锁死在自己目录,看不到服务器其他磁盘文件。

一、安装 OpenSSH Server(管理员 PowerShell)

# 安装 OpenSSH 服务端
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# 启动服务 + 设置开机自启
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic
# 查看状态,确认 Running
Get-Service sshd

二、新建专门的 SFTP 本地账号(推荐,不要用微软邮箱账号)

管理员 PowerShell 执行,示例账号:sftp01,自行替换密码

New-LocalUser -Name "sftp01" -Password (ConvertTo-SecureString "ABC@123456" -AsPlainText -Force) -FullName "SFTP用户01"

⚠️ 微软在线账号(邮箱登录)不支持密码登录 OpenSSH,一定要新建本地离线账号。

三、创建目录结构(重点!Windows OpenSSH Chroot 有特殊权限规则)

示例根路径 D:\sftp\sftp01

D:\sftp
└── sftp01            ← Chroot锁定目录(这个目录**不能给sftp01写入权限**!)
    └── upload        ← 真正上传下载目录,sftp01在此文件夹读写

原理:Chroot 目录所有者必须是 SYSTEM / Administrators;chroot 根目录不可写,可写目录必须是它的子文件夹,否则登录直接失败

一键设置 NTFS 权限(管理员 CMD 执行,直接复制)

:: 父壳目录 D:\sftp\sftp01:管理员/SYSTEM拥有,sftp01只有读取,不可写
icacls D:\sftp\sftp01 /inheritance:r
icacls D:\sftp\sftp01 /grant Administrators:(F) SYSTEM:(F)
:: 子目录 upload:给 sftp01 修改、读写权限
icacls D:\sftp\sftp01\upload /grant sftp01:(M)

四、修改 sshd_config 配置文件(核心模板)

路径:C:\ProgramData\ssh\sshd_config(ProgramData 是隐藏文件夹) 管理员打开:

notepad C:\ProgramData\ssh\sshd_config

全部配置模板(直接替换原有内容,端口 26、密码登录、仅 SFTP)

# 修改监听端口
Port 22
# 密码登录开启
PasswordAuthentication yes
# 公钥认证按需关闭(我们用密码)
PubkeyAuthentication no
# 子系统:使用内置internal-sftp(支持chroot,关键)
Subsystem sftp internal-sftp
# ===================== 用户隔离配置,放在文件最后 =====================
# sftp01 用户规则:仅SFTP、禁止终端、禁止端口转发、锁定目录
Match User sftp01
ForceCommand internal-sftp
ChrootDirectory D:\sftp\sftp01
PermitTTY no
AllowTcpForwarding no
X11Forwarding no
PermitTunnel no
AllowAgentForwarding no

多用户扩展:在末尾继续追加 Match User sftp02 {...} 块即可

校验配置语法(必做!写错 sshd 直接起不来)

& "$env:WINDIR\System32\OpenSSH\sshd.exe" -t

✅ 正常输出:Server listening on :: port 22. 

❌ 报错:回去检查配置、路径、换行、空格

校验无误,重启 sshd 服务:

Restart-Service sshd

五、防火墙放行 TCP 22 端口(管理员 PowerShell)

New-NetFirewallRule -Name sshd_sftp_22 -DisplayName "OpenSSH SFTP 22" -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

六、FlashFXP 连接参数(和你原来 freeSSHd 几乎一样)

  • 协议:SFTP over SSH

  • 服务器 IP:127.0.0.1 / 局域网 IP

  • 端口:22

  • 用户名:sftp01

  • 密码:你刚才设置的密码

✅ 登录进去第一眼看到 upload 文件夹,所有文件上传下载都放到 upload 内 

✅ 不再需要勾选老旧弱算法(diffie-hellman-group1-sha1),现代加密套件,稳定上传大文件不会崩溃

七、测试与常见坑排查

  1. 登录成功,但看不到文件夹:99% 是 Chroot 目录 NTFS 权限错误,重新跑上面 icacls 权限命令

  2. sshd 服务启动失败:一定先用 sshd.exe -t 校验配置

  3. 认证失败:确认是本地账号,不是微软邮箱账号;账号密码区分大小写

  4. 能登录,但上传报错:确认是往 upload 子目录传,不要直接在 chroot 根目录新建文件

八、进阶:批量多用户模板示例

新增 sftp02 用户,目录 D:\sftp\sftp02,在 sshd_config 末尾追加:

Match User sftp02
ForceCommand internal-sftp
ChrootDirectory D:\sftp\sftp02
PermitTTY no
AllowTcpForwarding no
X11Forwarding no
PermitTunnel no
AllowAgentForwarding no

同步新建目录、执行 icacls 权限脚本即可。

安全备注

  • 内网使用非常合适;如果放公网,建议改成密钥登录,关闭 PasswordAuthentication yes

该文章在 2026/11/3 17:28:38 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-1  粤公网安备44030602007207号