当前位置:首页>Linux>Windows挂载Linux服务器/mnt目录,保姆级教程来了!

Windows挂载Linux服务器/mnt目录,保姆级教程来了!

  • 2026-10-11 06:41:00
Windows挂载Linux服务器/mnt目录,保姆级教程来了!

写在前面

最近因为工作需求,需要把一台Ubuntu服务器的/mnt目录挂载到Windows本地,方便直接读写文件。

另外自己的codex配置在服务器上是公开的,不利于隐私性,而通过把代码挂载到自己windows上的方法可以直接使用自己电脑的codex修改挂载的代码,非常方便。

这篇文章把完整过程记录下来,每一步都经过实测验证,如果你也遇到类似场景,可以直接照抄。

一、最终效果

先看结果:

  • Windows成功把远程Ubuntu的/mnt目录挂载为本地Z盘

  • 可以正常读写Z:\sata1等子目录

  • 根目录Z:\只读不可写——这不是故障,而是服务器端权限限制

打开资源管理器,地址栏输入Z:\就能直接访问远程文件,跟操作本地硬盘一样。

二、为什么选这个方案

对目标服务器做了一轮端口探测:

  • 网络可达 ✅

  • SSH端口开放 ✅(但不是默认22)

  • SMB 445端口 ❌ 未开放

  • NFS 2049/111端口 ❌ 未开放

既然只开放了SSH,最稳妥的方案就是:

Windows安装WinFsp + SSHFS-Win,通过SSHFS协议挂载

三、适用前提

开始之前,先确认你具备这些条件:

  1. Windows能ping通Ubuntu服务器IP

  2. Ubuntu已开启SSH服务

  3. 你有SSH用户名、密码、端口号

  4. Windows有管理员权限安装软件

本次实测环境:

  • Windows PowerShell 5.1

  • Ubuntu服务器(IP已脱敏)

  • SSH用户:已脱敏

  • SSH端口:已脱敏(非默认22)

四、快速上手版(最简流程)

如果你不想看原理,直接按下面三步走。

第1步:安装WinFsp

在PowerShell(管理员模式)执行:

winget install --id WinFsp.WinFsp --source winget --accept-package-agreements --accept-source-agreements --silent

第2步:安装SSHFS-Win

winget install --id SSHFS-Win.SSHFS-Win --source winget --accept-package-agreements --accept-source-agreements --silent

第3步:执行挂载

net use Z: \\sshfs.r\用户名@服务器IP!端口号\mnt * /user:用户名 /persistent:yes

注意:把用户名、服务器IP、端口号替换成你自己的实际信息。*表示执行时手动输入密码,更安全。

执行后输入SSH密码,看到命令成功完成就搞定了。

五、详细实操记录(含踩坑排查)

下面是你这次真实经历的全过程,每一步都有验证。

5.1 测试网络连通性

Test-Connection -Count 2 服务器IP

✅ 主机可达

5.2 端口扫描

$results = foreach($p in 22,445,2049,111){  $r = Test-NetConnection -ComputerName 服务器IP -Port $p -WarningAction SilentlyContinue  [PSCustomObject]@{ Port = $p; TcpTestSucceeded = $r.TcpTestSucceeded }}$results

结果:

  • 22 ❌ 不通

  • 445 ❌ 不通

  • 2049 ❌ 不通

  • 111 ❌ 不通

后来查了本地~/.ssh/config配置才发现,SSH实际跑在非默认端口上。

5.3 确认SSH配置

查看本机C:\Users\你的用户名\.ssh\config,里面写着:

Host 别名  HostName 服务器IP  User 用户名  Port 端口号

这一步很关键——确认了正确的用户名和端口。

5.4 测试SSH登录

ssh -p 端口号 用户名@服务器IP "echo OK"

如果提示Permission denied (publickey,password),说明公钥没配,但允许密码登录,那就直接用密码方式挂载。

5.5 安装软件

两条winget命令顺利执行完成。安装后检查关键文件:

Get-ChildItem 'C:\Program Files\SSHFS-Win\bin\sshfs.exe'

文件已落地,组件到位。

5.6 挂载成功

net use Z: \\sshfs.r\用户名@服务器IP!端口号\mnt 密码 /user:用户名 /persistent:yes

返回:

命令成功完成。

5.7 验证挂载

Get-PSDrive Z

显示:

  • Name: Z

  • Root: Z:\

  • DisplayRoot: \sshfs.r\用户名@服务器IP!端口号\mnt

查看目录:

Get-ChildItem Z:\

看到了sata1和usb两个子目录,说明读取正常。

六、权限问题定位

根目录为什么不能写?

尝试往Z:\根目录写测试文件:

Set-Content Z:\test.txt -Value 'test'

报错:拒绝访问。

原因分析:这不是挂载失败,而是服务器端/mnt目录权限为drwxr-xr-x root root,SSH用户只有读权限,没有写权限。

而子目录/mnt/sata1权限为drwxrwxrwx,可读可写。

验证写入

$testFile = 'Z:\sata1\test.txt'Set-Content $testFile -Value '写入成功'Get-Content $testFileRemove-Item $testFile

✅ 创建、读取、删除全部成功。

结论:挂载没问题,根目录不可写是服务器权限策略,不是Windows端的锅。

七、标准操作流程(以后照做)

挂载(推荐手动输密码)

net use Z: \\sshfs.r\用户名@服务器IP!端口号\mnt * /user:用户名 /persistent:yes

查看挂载状态

Get-PSDrive ZGet-ChildItem Z:\

取消挂载

net use Z: /delete

更换盘符

把Z:换成Y:即可:

net use Y: \\sshfs.r\用户名@服务器IP!端口号\mnt * /user:用户名 /persistent:yes

八、常见问题与解决

❌ 问题1:Permission denied

现象:公钥登录失败

原因:服务器未信任你的公钥,但允许密码登录

解决:直接用密码方式挂载,或把公钥加到服务器的~/.ssh/authorized_keys

❌ 问题2:Z盘根目录不能写

现象:能打开Z盘,但创建文件报权限错误

原因:服务器/mnt目录属主是root,当前用户只有读权限

解决:

  1. 写到有权限的子目录,如Z:\sata1

  2. 或在服务器上创建一个专属共享目录:

sudo mkdir -p /mnt/sharesudo chown 用户名:用户名 /mnt/share

之后Windows写Z:\share即可。

❌ 问题3:安装SSHFS-Win看起来卡住了

现象:winget下载完安装包,msiexec进程长时间挂着

解决:

  1. 先检查文件是否已落地:C:\Program Files\SSHFS-Win\bin\sshfs.exe

  2. 直接测试net use能否挂载

  3. 如果确实没装好,重启后重新安装

❌ 问题4:默认22端口不通

现象:以为SSH服务没开

原因:服务器把SSH改到了非默认端口

解决:检查本地~/.ssh/config或直接测试正确端口:

Test-NetConnection 服务器IP -Port 端口号

❌ 问题5:net use成功了,但资源管理器看不到

现象:命令行显示成功,net use能看到盘符,但“此电脑”里没显示

原因:Windows资源管理器没有立刻刷新网络位置

解决:

  1. 直接在地址栏输入Z:\回车

  2. 或者重启资源管理器:

Stop-Process -Name explorer -ForceStart-Sleep -Seconds 2Start-Process explorer.exe

九、推荐优化方案

优化1:创建专用共享目录

在服务器上:

sudo mkdir -p /mnt/sharesudo chown 用户名:用户名 /mnt/sharechmod 755 /mnt/share

以后Windows里稳定读写Z:\share。

优化2:配置免密登录

Windows生成公钥:

ssh-keygen
把公钥内容追加到服务器:
mkdir -p ~/.sshchmod 700 ~/.sshecho "公钥内容" >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys

搞定后挂载不再需要输密码。

十、完整命令清单(直接复制)

安装组件

winget install --id WinFsp.WinFsp --source winget --accept-package-agreements --accept-source-agreements --silentwinget install --id SSHFS-Win.SSHFS-Win --source winget --accept-package-agreements --accept-source-agreements --silent

挂载

net use Z: \\sshfs.r\用户名@服务器IP!端口号\mnt * /user:用户名 /persistent:yes

查看

Get-PSDrive ZGet-ChildItem Z:\

卸载

net use Z: /delete

写在最后

本次挂载已成功完成,核心结论:

  1. ✅ Windows到Ubuntu的/mnt成功挂载为Z盘

  2. ✅ Z盘可正常读取

  3. ✅ 子目录Z:\sata1可读可写

  4. ⚠️ Z盘根目录不可写——是服务器权限限制,非挂载异常

正常情况下挂载后windows资源管理器是能直接看到该文件夹的。

最新文章

随机文章