如何在 Windows 上安装 OpenSSH 搭建 SFTP 服务器?

来源:Linux教程作者:孙志远头衔:网络博主
导读:本期聚焦于孙志远创作的《如何在 Windows 上安装 OpenSSH 搭建 SFTP 服务器?》,敬请观看详情。如果需要在 Windows 主机上开启安全文件传输,又不希望额外部署第三方 FTP 软件,那么系统自带的 OpenSSH 服务端就是一个现成方案。本文围绕 OpenSSH 在 Windows 上的安装与配置展开,先说明 OpenSSH Server 与 Client 两个组件的区别,再演示通过设置界面和 PowerShell 命令两种方式完成服务端安装。默认安装后,核心程序位于 C:\Windows\System32\OpenSSH,配置文件在 C:\ProgramData\ssh\sshd_config。启动 sshd 服务并放行 22 端口后,即可使用 SFTP 协议连接。文中还会介绍如何修改 Subsystem sftp 参数、如何通过目录权限限制用户访问范围,以及使用 WinSCP 等客户端进行验证的步骤。整套流程不需要第三方软件,适合 Windows Server 和 Windows 10 及以上系统快速搭建安全的文件交换通道。

Windows 系统内置 OpenSSH 之后,搭建 SFTP 服务不必再依赖 FTP 软件或额外的 Linux 虚拟机。OpenSSH 服务端通过 SSH 加密通道提供文件传输能力,默认支持 SFTP 子系统,客户端使用 WinSCP、FileZilla 或命令行 sftp 即可连接。安装过程主要涉及可选功能添加、sshd 服务启动、防火墙放行以及配置文件调整,本文将按步骤说明。

如何在 Windows 上安装 OpenSSH 搭建 SFTP 服务器?

安装前需要区分的组件与系统版本

在 Windows 上安装 OpenSSH 前,需要先分清 OpenSSH Server 与 OpenSSH Client 两个可选功能。OpenSSH Client 用于从本机发起 SSH 或 SFTP 连接,例如执行 ssh user@host 命令;OpenSSH Server 才是真正监听 22 端口、对外提供 SSH 和 SFTP 服务的组件。如果只是想让别人通过 SFTP 上传下载文件,必须安装 OpenSSH Server,仅安装 Client 无法启动 sshd 服务,这也是实际操作中常见的误区。

系统版本方面,Windows 10 1809 及以上、Windows Server 2019 及以上都已经内置 OpenSSH 可选功能。可以在“设置”的“应用”页面中查看,也可以执行 PowerShell 命令查询当前系统是否已安装。安装前建议确认当前用户具有管理员权限,因为添加可选功能、启动服务以及修改 C:\ProgramData\ssh\sshd_config 都需要管理员或 SYSTEM 权限。另外,如果之前手动解压过 OpenSSH 可移植版本,应避免与内置组件混用,以免出现服务路径冲突。

安装完成后,OpenSSH 的服务端程序位于 C:\Windows\System32\OpenSSH 目录,主要文件包括 sshd.exe、sftp-server.exe 和 ssh.exe。sshd.exe 是主服务进程,sftp-server.exe 是默认的 SFTP 子系统程序。了解这些路径有助于后续排查服务启动失败或配置文件加载问题。

通过设置界面或 PowerShell 安装 OpenSSH Server

图形安装适合不熟悉命令的用户。打开“设置”,进入“应用”和“可选功能”,点击“添加功能”,在搜索框中输入 OpenSSH,然后勾选“OpenSSH 服务器”并点击安装。等待进度条结束后,系统会自动把 sshd 服务注册为 Windows 服务。如果列表中没有 OpenSSH 服务器,先检查系统更新,因为较旧的 1803 或 1709 版本可能不提供该可选功能。

PowerShell 安装更便于批量部署和脚本化操作。以管理员身份运行 PowerShell,执行以下命令可以查看当前 OpenSSH 状态:

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

输出中 State 为 Installed 表示已安装,NotPresent 表示未安装。如果确认未安装,执行下面的命令添加 OpenSSH 服务端:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

这条命令会从 Windows 更新源下载并安装 OpenSSH Server。安装完成后再次查询状态,应显示 Installed。整个过程中不需要手动下载安装包,也不需要设置环境变量。若公司网络禁止访问 Windows 更新,可以通过离线包部署,但建议优先使用系统自带的可选功能,便于后续更新。

某些精简版系统或长期未更新的环境可能在执行 Add-WindowsCapability 时报错,此时可先运行 sfc /scannow 修复系统组件,或安装最新累积更新后再试。安装成功后,sshd 服务默认处于停止状态,需要手动启动。

启动 sshd 服务并放行防火墙端口

OpenSSH Server 安装完成后,服务并不会自动运行。可以在“服务”管理器中找到 OpenSSH SSH Server,将其启动类型改为“自动”,然后点击启动。也可以使用 PowerShell 完成同样操作,命令如下:

Set-Service sshd -StartupType Automatic
Start-Service sshd

执行后可以通过 Get-Service sshd 查看状态,Running 表示服务已在监听 22 端口。若启动失败,常见原因是配置文件语法错误或 22 端口被其他程序占用。可以运行 netstat -ano | findstr :22 确认端口占用情况,也可以查看 C:\ProgramData\ssh\logs\sshd.log 日志文件获取具体错误信息。

Windows 防火墙默认不会放行 22 端口,必须手动添加入站规则。管理员 PowerShell 执行:

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

这条规则允许外部主机通过 TCP 22 端口访问本机 SSH 服务。如果公司安全策略要求限制来源 IP,可以在命令中追加 -RemoteAddress 参数,例如 -RemoteAddress 192.168.1.0/24。放行端口后,同一局域网内的其他机器就能使用 SFTP 客户端连接。注意不要同时开放不必要的端口,SSH 服务只监听 22 即可满足 SFTP 需求。

调整 sshd_config 配置 SFTP 目录与认证方式

OpenSSH 的配置文件位于 C:\ProgramData\ssh\sshd_config。使用记事本以管理员身份打开该文件,可以看到默认的 Subsystem sftp 配置。Windows 版通常写为:

Subsystem sftp sftp-server.exe

这意味着客户端连接后启动 sftp-server.exe 处理文件传输。默认情况下,用户登录后根目录是自己的用户目录,例如 C:\Users\用户名。如果想限制用户只能访问某个指定目录,可以使用 ChrootDirectory 参数,但 Windows OpenSSH 的目录隔离与 Linux 不同,需要确保目标目录及其上级目录的 ACL 不允许用户写入上级目录。简单做法是保持默认用户目录,再通过 Windows 权限控制文件访问范围。

认证方面,sshd_config 中的 PasswordAuthentication 默认允许密码登录,适合内网快速验证。如果需要更高的安全性,可以生成密钥对并配置公钥认证。修改配置后必须重启 sshd 才会生效,命令为 Restart-Service sshd。修改配置前建议备份原文件,避免误改导致服务无法启动。

PasswordAuthentication yes
PubkeyAuthentication yes

此外,Windows OpenSSH 对 Administrators 组有特殊处理:默认只有 administrators_authorized_keys 文件生效,普通用户则使用 .ssh\authorized_keys。若发现公钥登录失败,优先检查用户目录下的 .ssh 文件夹权限以及 authorized_keys 文件编码,必须是 UTF-8 无 BOM。

使用 SFTP 客户端连接验证与常见故障排查

服务启动并放行端口后,可以在同一台机器上用命令行先做本地测试。执行 sftp username@127.0.0.1,输入密码后如果出现 sftp 提示符,说明 SFTP 子系统工作正常。也可以使用 WinSCP 或 FileZilla,协议选择 SFTP,主机名填服务器 IP,端口填 22,用户名和密码与 Windows 账户一致。连接成功后即可浏览用户目录并上传下载文件。

常见的连接失败原因包括:sshd 服务未启动、防火墙未放行 22 端口、配置文件语法错误、账户密码策略导致认证失败。排查顺序建议先确认本机 22 端口监听状态,再检查防火墙规则,最后查看 C:\ProgramData\ssh\logs\sshd.log。日志中通常会记录认证失败的具体原因,例如 invalid user、password authentication failed 等,根据提示调整账户或配置即可。

如果企业网络中有组策略限制,可能会导致防火墙规则被覆盖或服务被禁用。此时需要联系域管理员将 OpenSSH SSH Server 加入允许列表。完成以上步骤后,Windows 主机就可以作为稳定的 SFTP 服务器使用,无需安装第三方 FTP 服务,也避免了明文传输密码的风险。

OpenSSHSFTPWindows修改时间:2026-09-17 02:06:37

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/0917/58315.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。