关于Windows登陆Samba失败的话题由来已久,但搜遍网上的帖子,有一个原因均没有提及,那就是Win10是否使用了微软账户联网登录,如果是,那么按照网上的教程操作十有八九无法解决问题。

问题描述

最近刷OpenWrt时心血来潮弄了个Samba服务器,想要在局域网内共享文件,但是Android手机登录Samba顺畅无比,但家里两台Win10电脑均无法登录,上网搜遍了解决方案但还是无济于事,于是用WireShark抓包,终于发现问题症结所在。

问题分析

注意,此时我的Win10设备已经开启Samba 1.0支持!
Win10开启Samba 1.0支持

我有两台OpenWrt设备,分别运行samba36和samba4的server,通过WireShark抓包分析,可以发现Win10面对这两台设备所表现出的反应是不同的。

Win10连接Samba36时的反应

Win10连接Samba36时的反应-RequestWin10连接Samba36时的反应-Response
如上图所示,Win10在连接Samba36时,首先向Samba36询问:“我这些协议你看看你用哪个能给我提供服务?”,然后Samba36回:“用NT LM 0.12吧”,于是连接建立成功,Win10用微软账户直接登录。这个用微软账户直接登录登录是最坑的,一般来说微软账户用的都是邮箱,和Samba里面存在的账户一致的可能性几乎为0。Samba36服务器反应还算厚道,会弹出窗口告诉你用户名和密码错误(如下图所示),让你重新填写,于是当你重新填写之后就一切正常了。
弹出用户名和密码错误

Win10连接Samba4时的反应

Win10连接Samba4时的反应-Request1Win10连接Samba4时的反应-Response1Win10连接Samba4时的反应-Request2Win10连接Samba4时的反应-Response2
如上面4张图所示,Win10在连接Samba4时,首先询问:“我这些协议你看看你能用哪个给我提供服务?”,然后Samba4回复:“什么垃圾协议,给我整点SMB 2.0以上的!”,然后Win10把自己SMB 2.0以上的协议报给Samba4,Samba4回:“就用SMB 3.1.1吧!”,然后连接建立成功,同样地,Win10用微软账户直接登录。一旦这样做,此时Win10不再会像连接Samba36时给你机会填写用户名和密码,直接显示连接不成功,如下图所示。
直接显示连接不成功,<code>未指定的错误 80004005</code>

问题解决

既然用微软账户联网登录的Win10主动向Samba服务器提供邮箱地址作为登录信息,那我们让Win10在向别人做自我介绍时用Samba里面的账户即可。按照如下步骤即可解决问题,此方法对Samba36和Samba4均有效
1、打开控制面板,选择凭据管理器
找到<code>凭据管理器</code>
2、选择Windows凭据,然后点击添加凭据
添加凭据
3、填入Samba服务器的地址、用户名和密码,点击OK后保存即可。

服务器地址也可以是IP地址形式,但前面必须有反双斜线

输入信息后保存

解决验证

如下图所示,Win10已经可以正常登录Samba服务器了。
成功登录Samba服务器!


版权属于:Edward Kong

本文链接:https://kong.ink:666/archives/Win10-login-Samba-if-Microsoft-Account-Used

转载时请注明出处及本文链接

最后修改:2020 年 07 月 16 日 08 : 33 AM
如果觉得我的文章对你有用,请随意赞赏