跳到主要内容
AnyStorage
免费下载

Windows 11 的 SFTP

在 Windows 11 上把 SFTP 挂载成磁盘:四种方法

Windows 11 自带 SFTP 客户端,但没法把 SFTP 映射成盘符。四条有文档可依的路径、准确的 UNC 写法,以及重启之后怎么办。

为什么 net use 在 Windows 11 上映射不了 SFTP,以及仍然能拿到盘符的四种做法——两种需要内核驱动,两种不需要。

Windows11 SFTP 挂载,SFTP 网络驱动器 Windows11,sshfs windows

Windows 11 自带了什么,又没有什么

2026 年 9 月 24 日按 Microsoft 官方文档核对。 Windows 11 可以从命令提示符与 SFTP 服务器通信。Microsoft 的 OpenSSH 概览页列出了内置在 Windows 功能里的命令——sshsshdssh-keygenssh-agentssh-addssh-keyscansftpscp——所以 sftp user@host 是微软原生的手段。

Windows 11 完全做不到的,是把那台服务器变成一个盘符。「映射网络驱动器」里没有 SFTP 选项,外壳也不认识 sftp:// 这种写法,更没有对应的重定向器。这块空白就是本文的主题。跨平台的通用版本在把 SFTP 挂载为网络驱动器,下面只谈 Windows 11。

先确认 OpenSSH 客户端在不在

不要默认它已经装好了。Microsoft 的安装状态表对「Windows 10 build 1809 +」写的是「Not installed, install and enable using optional features」,标注为「Installed but not enabled」的只有 Windows Server 2025。确认之后只装客户端,往外连不需要服务端。

powershell

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

两个组件都没装的机器,对 OpenSSH.Client~~~~0.0.1.0 会返回 State : NotPresent。图形界面的等价路径是:开始菜单、*可选功能*、查看功能OpenSSH 客户端添加

密钥的位置和 Linux 是一个思路。ssh-keygen -t ecdsa 给出的保存路径是 C:\Users\username/.ssh/id_ecdsa——这个分隔符混用的提示就是 Microsoft 文档里原样写的;不指定算法时默认用 Ed25519。代理在新机器上是停用状态:

powershell

Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ecdsa

先把 ssh user@host 跑通再往下走。下面四条路径的认证方式都一样,所以这里卡住的密钥在那边也会卡住,而终端里的报错通常比图形界面的对话框具体得多。如果已经在盯着报错,SFTP 的 Permission denied (publickey) 是对应的那篇。

为什么单靠 `net use` 映射不了 SFTP

这段值得写准确,因为网上有大量本来就跑不通的 net use 配方。Microsoft 的参考文档把这个命令定义为「Connects a computer to or disconnects a computer from a shared resource」,把本地名限定为两类设备——「disk drives (that is, D: through Z:) and printers」——并把目标规定为 \\ComputerName\ShareName。没有任何参数接受 URL、协议名或端口号。

所以 net use 不说 SFTP,它只是把一个盘符绑到「别的东西已经在提供的 UNC 路径」上。SSHFS-Win 之所以能用,正是因为它注册了一个 \\sshfs\ 的网络提供程序,net use 于是像映射普通共享一样把它挂上。反过来说,任何声称「只要一条 net use 命令就能挂 SFTP」的教程,都隐含了「你已经装好了某个提供程序」这个前提,而那个前提往往才是真正要做的工作。

四条路径并排

前置条件、许可与价格均于 2026 年 9 月在各项目 / 厂商官网核对(checked September 2026)。
路径内核驱动许可 / 价格盘符密钥认证注意点
SSHFS-Win + WinFsp需要(WinFsp)免费;GPLv2+ 与带 FLOSS 例外的 GPLv3net use X: \\sshfs\....k 系前缀读 %USERPROFILE%/.ssh/id_rsa,仅支持无口令的密钥
rclone mount + WinFsp需要(WinFsp)免费,MIT命令行里写 X:*key_file 或 Pageant;只支持未加密的 OpenSSH / PEM 密钥
Bitvise SSH Client官网未说明所有环境下免费自带的 SFTP 盘符映射图形界面管理密钥
AnyStorage不需要,走回环 WebDAV免费版只读,Pro 读写http://127.0.0.1:3211 映射成网络驱动器每个连接各自配密钥或密码

四条里有两条会装内核态的文件系统驱动,两条不会。WinFsp 自称是「a kernel mode file system driver (FSD) and a user mode DLL」,覆盖「Windows 7 to Windows 11 and the x86, x64 and ARM64 architectures」,许可是带 FLOSS 例外的 GPLv3,另外也提供商业许可。这和 Linux 从 FUSE 得到的是同一套机制,技术上没什么可指摘的;但在受管控的公司电脑上,装一个内核态驱动通常意味着要先走一遍 IT 部门的审批流程,而这经常是这两条路径真正的阻碍,而不是技术问题。

路径一:SSHFS-Win 加 WinFsp

Windows 上最接近 sshfs 的东西。先装 WinFsp(项目的说明就是「Install the latest version of WinFsp」),再装 SSHFS-Win,许可与 SSHFS 相同,是 GPLv2 及以上。

powershell

winget install SSHFS-Win.SSHFS-Win
net use X: \\sshfs\user@host!2222\srv\data

写法的文档形式是 \\sshfs\[LOCUSER=]REMUSER@HOST[!PORT][\PATH],而前缀会同时改变起点目录和认证方式:

  1. \\sshfs\ 映射远端用户的主目录。
  2. \\sshfs.r\ 映射远端的根目录。
  3. \\sshfs.k\ 映射主目录,使用 SSH 密钥认证。
  4. \\sshfs.kr\ 映射根目录,使用 SSH 密钥认证。

端口写在 ! 后面,默认 22。真正让人踩坑的是密钥限制:.k.kr%USERPROFILE%/.ssh/id_rsa 读密钥,而且用项目自己的话说,「only keys without a pass phrase are supported」。也就是说,一个现代默认配置下生成的、带口令的 id_ed25519 在这两个前缀下直接用不了——既不是文件名不对,也不是权限不对,而是它本身不支持。替代做法是在 SSH 的 config 里建一个别名,把密钥路径写在那里,让 SSHFS-Win 走这个别名连接。如果手打 UNC 路径不算界面,SSHFS-Win-Manager 是一个第三方的图形前端,密码和公钥两种方式都支持。

路径二:rclone mount 加 WinFsp

rclone 的 sftp 远端接受 hostuserport(默认 22)、passkey_file,挂载走的是同一个驱动——「to run rclone mount on Windows, you will need to download and install WinFsp.」

powershell

rclone config create srv sftp host example.com user deploy key_file %USERPROFILE%\.ssh\id_ed25519
rclone mount srv:/srv/data X: --vfs-cache-mode writes --network-mode

结果像不像一块磁盘,由三个参数决定。盘符写 X:,或者用 * 取下一个空闲字母。--network-mode 让挂载表现为网络驱动器而不是固定磁盘,并且配合 --volname \\server\share 使用。缓存模式基本是必填的:默认的 off 下文件「can't be opened for both read AND write」,所以「many applications won't work with their files on an rclone mount without --vfs-cache-mode writes or --vfs-cache-mode full」。

rclone 的 SFTP 页面上有两个 Windows 专属的坑:「the only ssh agent supported under Windows is Putty's pageant」——不是你刚刚启用的那个 ssh-agent 服务——以及 key_file 只支持「unencrypted OpenSSH or PEM encrypted files」。如果挂载根本起不来,rclone mount 的 FUSE 报错 讲的就是驱动那一侧的失败。

路径三:Bitvise SSH Client

一个只有 Windows 版的应用,公开的功能列表里既有「one of the most advanced graphical SFTP clients」,也单列了「SFTP drive mapping」。它的许可条款相当宽松——「Bitvise SSH Client can be used free of charge, in all types of environments, without limitation」,付费许可增加的是「slightly stronger support and upgrade commitments」和免费版不含的免责条款。支持范围从 Windows 11 和 Windows Server 2025 一直回溯到 Windows XP SP3,核对时的版本是 9.66。它没有公开的是那套盘符映射在底层装了什么,所以上表里的驱动那一列请读成「未说明」,而不是「不需要」。

路径四:AnyStorage,完全不用驱动

这条路把问题反过来解。不是教 Windows 说 SFTP,而是在机器上跑一个「对外说 SFTP、对内说 WebDAV」的东西,再让 Windows 去挂那个 WebDAV。从 Windows 的角度看这就是一个普通的 WebDAV 网络驱动器,不需要新驱动,也不需要管理员权限。

AnyStorage 0.2.25 于 2026 年 9 月 23 日发布,支持 Windows 10 及以上。添加一个 SFTP 连接并打开一次,然后在侧边栏的 Services 里选 WebDAV 标签,按 Start。服务监听 http://127.0.0.1:3211,HTTP Basic 认证始终开启,用户名是 anystorage,密码是首次启动生成的 24 位字符,然后把这个 URL 粘进资源管理器的「映射网络驱动器」即可。

如实说明限制。 免费版的 WebDAV 服务是只读的,读写要 Pro,也就是说「能被其他程序写入的盘符」是付费功能。同时没有 TLS,这正是它默认绑定回环地址的原因;一旦开启局域网访问,Basic 认证的凭据就会以明文穿过网络,应用本身也会就此给出警告。另外没有文件锁,所以两台机器同时编辑同一个远端文件不受保护。连接是惰性接入的,所以重启应用之后把 SFTP 连接打开一次,它就会重新出现在 WebDAV 根目录下。另外 Windows 自带的 WebDAV 客户端有自己的一串毛病:WebClient 服务在 2026 年已被标记为弃用且通常处于停止状态;HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters 下的 BasicAuthLevel 在改成 2 之前会拒绝明文 HTTP 上的 Basic 认证;FileSizeLimitInBytes 把传输卡在 50,000,000 字节。不处理这些就会看到 "The folder you entered does not appear to be valid"、System error 67 或 0x80070043

资源管理器怎么对待这几种挂载

在 Windows 看来它们并不一样,差别体现在很多小地方。

net use 的映射只能取 Microsoft 定义里的「D: through Z:」,所以 C: 之前用不了,同时映射的数量上限就是剩下的字母数。也就是说,如果你要同时连的服务器超过二十几台,这条路径本身就到顶了。

rclone 的挂载默认是固定磁盘;--network-mode 让它变成网络驱动器,--volname \\server\share 给它一个 UNC 形态的名字。这个选择会改变部分程序对该路径的处理方式,备份工具对「网络位置」的行为尤其不同。

AnyStorage 那条路是一个 WebDAV 的网络位置,所以它继承的是 Windows WebDAV 客户端的行为,而不是 SFTP 的行为。正因为如此,上面那几个注册表值比任何 SFTP 设置都更影响结果。

而在所有路径底下,每一次列目录都是对服务器的真实往返。一个有两万个条目的目录,打开起来就是两万个条目的感觉,这一点没有任何挂载方式能绕过去,只能靠少建大目录来回避。

重启之后还要留着挂载

有文档可依的原生持久化机制只有一个,属于 net use/persistent:yes 会「saves all connections as they are made, and restores them at next logon」。SSHFS-Win 那条路最终落在真正的 net use 映射上,所以这一招有效。

powershell

net use X: \\sshfs\user@host /persistent:yes

同一份参考文档里有两条注意事项:/persistent 的默认值是「the setting used last」,所以要显式指定;以及「deviceless connections are not persistent」——没有盘符的映射不会回来。另外三条路径的持久化是应用自己的事;rclone 的挂载文档讲的是挂载本身,不涉及 Windows 的自启动机制,所以任何自启动配方都请当成你自己的配置,而不是官方功能。

常见问题

Windows 11 自带 SFTP 客户端吗?

命令行有,文件管理器没有。Microsoft 的 OpenSSH 文档把 sftpscp 列为 Windows OpenSSH 功能内置的命令,装上 OpenSSH 客户端之后 sftp user@host 就能用。Windows 11 里没有任何功能能把 SFTP 映射成盘符。图形客户端见Windows 11 的 SFTP 客户端

为什么 net use 对 SFTP 不起作用?

因为 net use 不说任何协议。Microsoft 的参考文档把它定义为连接到「a computer to ... a shared resource」,目标限定为 \\ComputerName\ShareName,本地名限定为「disk drives (that is, D: through Z:) and printers」。它只是把一个字母绑到别的东西提供的 UNC 路径上。SSHFS-Win 能配合 net use,恰恰是因为它注册了一个供 net use 指向的 \\sshfs\ 提供程序。

在 Windows 11 上挂载 SFTP 必须装 WinFsp 吗?

四条路径里有两条必须。SSHFS-Win 把 WinFsp 列为前置条件,rclone 也写明 Windows 上运行 rclone mount「will need」它。WinFsp 是覆盖 Windows 7 到 11、x86 / x64 / ARM64 的内核态文件系统驱动,许可是带 FLOSS 例外的 GPLv3。能避开它的两条是 AnyStorage 的回环 WebDAV 服务和 Bitvise 自带的盘符映射。

带口令的 SSH 密钥能用吗?

取决于路径,这也是最容易让人意外的地方。SSHFS-Win 的 .k.kr%USERPROFILE%/.ssh/id_rsa,只支持「only keys without a pass phrase」。rclone 接受 key_file,但仅限「unencrypted OpenSSH or PEM encrypted files」,而且在 Windows 上「the only ssh agent supported ... is Putty's pageant」。Windows 原生的 sshsftp 通过 ssh-add 处理口令没有问题,所以对口令友好的是命令行,以及自己管理密钥的客户端——参见FTP / SFTP 客户端

为什么挂载比命令行的 sftp 慢?

因为文件管理器要的东西比你多得多。rclone 自己在 SFTP 一侧的默认值就说明了问题的形状:--sftp-concurrency 允许每个文件 64 个未完成请求,--sftp-chunk-size 是 32Ki,而文档指出这已经是协议允许的上限,所以吞吐受限于往返次数而不是带宽。缩略图和索引会把这些往返成倍放大。还有一点值得知道:「SFTP does not natively support checksums (file hash)」,所以除非能在远端执行 md5sum,这条链路上没有任何一环会用哈希校验副本——复制对话框报告的是搬走了多少字节,不是校验了多少字节。