☰
解决“Windows11无法通过samba服务器在windows下访问linux文件”的问题
2026/10/14 3:28:31 网站建设 项目流程

一、问题背景

虚拟机内运行 Ubuntu Linux,希望通过 Samba 服务实现 Windows 与 Linux 之间的文件共享。但 Windows 在文件资源管理器中输入\\xxx.xxx.xx.xxx后,提示"Windows 找不到\\xxx.xxx.xx.xxx",无法访问。但使用FileZilla或MobaXterm则可使用该ip连接到虚拟机中。

用命令行直接尝试连接,获取更具体的错误信息:

使用ifconfig命令获取虚拟机IP:

cmd使用管理员输入一下内容:

net use \\xxx.xxx.xx.xxx\IPC$ /user:xxx.xxx.xx.xxx\用户名 (上方指令中“xxx.xxx.xx.xxx”指虚拟机IP,“用户名”指虚拟机用户名)

返回错误码及错误内容:

发生系统错误 1219。 不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接。 中断与此服务器或共享资源的所有连接,然后再试一次。

系统错误 1219 的含义是:Windows 已经用某个凭据与目标服务器建立了连接,此时又尝试用另一个用户名连接,导致凭据冲突。

二、解决方案

2.1 第一步:清除所有现有 SMB 连接

在管理员 CMD 中执行:

net use * /delete /y

2.2 第二步:清除凭据管理器中的残留条目

在管理员 CMD 中执行:

cmdkey /list

删除所有涉及xxx.xxx.xx.xxx(虚拟机IP)的条目:

cmdkey /delete:xxx.xxx.xx.xxx

2.3 第三步:重启 Workstation 服务(如仍有残留)

在管理员 CMD 中执行:

net stop workstation /y net start workstation

2.4 第四步:重新访问

清理完成后,在文件资源管理器地址栏输入:

\\xxx.xxx.xx.xxx

弹出凭据框时输入用户名及密码


三、问题总结

3.1 造成本次问题的核心原因

Windows 的 SMB 客户端凭据缓存冲突(系统错误 1219)。

在反复排查过程中,Windows 累积了针对目标 IP 的多个失败会话和错误凭据。当网络层和端口层最终确认正常时,Windows 却因为"已存在一个连接"而拒绝用新用户名建立新连接。

3.2 关键排查经验

1. 区分不同协议通道

FileZilla 使用 SFTP(端口 22),Samba 使用 SMB(端口 445)。两者是完全独立的服务通道,一个通不代表另一个通。不能用 FileZilla 能连作为 Samba 可用的证据。

2. 分层排查思路

排查顺序应该是:

网络层(ping) → 端口层(Test-NetConnection) → 服务层(systemctl status) → 用户层(pdbedit) → 客户端层(net use / cmdkey)

每一层确认无误后再进入下一层,避免在错误的方向上浪费时间。

4. 部分常见错误码

  • 系统错误 1219:多重连接冲突,需清除现有会话

  • 系统错误 53:找不到网络路径,通常是 NetBIOS 或签名问题

  • 0x80070035:找不到网络路径,常见于 SMB 协议版本不匹配

  • 0x80004005:未指定错误,常见于认证或来宾登录被拒

5. Windows 凭据管理器是排查 SMB 问题的重要工具

cmdkey /list和cmdkey /delete是清除陈旧凭据的有效手段,在排查"能 ping 通、端口也通,但就是访问不了"的问题时,应优先考虑凭据缓存问题。

附:完整排查命令速查

步骤Linux 端Windows 端
网络连通性ip addrping <IP>
端口监听sudo ss -tlnp | grep 445Test-NetConnection <IP> -Port 445
服务状态sudo systemctl status smbd—
用户检查sudo pdbedit -L—
配置检查testparm -s—
凭据清理—cmdkey /list、cmdkey /delete:<IP>
会话清理—net use * /delete /y
服务重启sudo systemctl restart smbdnet stop workstation /y

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询