升级到Sierra后无法连接到SMB共享。

升级到Sierra后,我的MacBook Air无法通过Samba连接到家庭网络上的NAS。当我尝试连接服务器并输入以下内容时:

smb://x.x.x.x/MEDIA/

我遇到一个错误,显示“此文件服务器不允许其他用户登录。请稍后再试。”我的Mac Mini仍然运行在OS X 10.9上,仍然可以连接到共享文件夹。

我没有这个问题,但我也注意到每次连接时都必须再次确认密码对话框。肯定有些变化发生了。 - bot47
4个回答

尝试使用cifs://x.x.x.x/MEDIA/进行连接 对我来说有效!

谢谢,但我已经尝试过了。没有解决我的问题。 - PoorYorick
哇,这对我也适用。你有没有想法为什么CIFS可以工作而SMB不能?多年来,我一直在两台MacBook Pro上使用SMB与同一台Linux Samba服务器进行连接。只是自从我升级到High Sierra后,我无法再从我的两台High Sierra机器访问Samba共享文件夹了。 - Jonathan

我遇到了同样的问题。我在本地网络上有一台Linux服务器,有两个IP地址,其中一个被设置为我的路由器上的DMZ IP,用于绑定公共访问的服务(如Web和SSH服务器),另一个则是仅限内部使用的,比如BIND等。 事实证明,当我将网络从10.x.x.x切换到192.168.x.x时,我忘记将子网掩码从8位更新为24位。一旦我做到这一点,共享立即开始工作。这是有道理的,因为smbd/nmbd需要一个正确的广播地址来进行发现。所以请检查您的服务器,并确保您正在使用的IP块的掩码是正确的。 此外,尝试在服务器上禁用巨型帧(确保MTU小于2000)。

我遇到了同样的错误并解决了它。问题出在我的服务器的smb.conf文件中。在[global]部分有一行smb ports = 139。如果这个设置生效,服务器只接受使用端口139的连接,而不是端口445的连接。
删除这行并重新启动服务器后,连接如预期地建立起来了。
所以请检查你的NAS是否接受使用端口445的连接。我认为Sierra使用smb客户端时会使用端口445。

我的smb.conf文件没有一个smb ports行。我尝试向其中添加"smb ports = 445"(不带引号),然后重启了服务器。但仍然无法连接。谢谢你的建议,不过似乎服务器期望的内容与我Mac发送的内容之间存在冲突。 - PoorYorick
如果在smb.conf中没有"smb ports"条目,smbd服务将同时使用端口139和445。因此,您可以删除此条目。 如果您的NAS是基于Linux/Unix的,并且您具有终端访问权限,您可以首先使用命令netstat -anp tcp | grep smbd检查smbd正在监听哪些端口。应该会显示带有您的NAS IP地址后跟冒号和使用的端口号的条目。如果没有带有端口445的条目,则表示您的NAS不在端口445上进行监听。 - uldo
谢谢 @uldo,这帮助我发现我的 Mac Mini 正在通过 139 端口连接。我会再次尝试监听 445 端口。 - PoorYorick
今天我已经花了四个小时,但是对于解决这个问题来说一点进展也没有。以下是我所知道的情况:
  • Mac Mini(在El Capitan系统上)与位于139端口的NAS之间有一个非常稳定的SMB连接。
- PoorYorick
这是我所知道的:1. Mac Mini(在El Capitan上)与端口139上的nas之间有一个非常强大的smb连接。2. 我在我的smb.conf中尝试了"smb ports = 445"和"smb ports = 139 445",Mini无论如何都能连接,但Air(Sierra)从未连接过;在nas的netstat中从未看到过445端口的连接。3. 我的nas使用的是samba 3.0.23c。4. 我尝试将nas升级到samba 3.6,但我正在尝试使用的软件包二进制文件需要比我找到的旧版本libiconv和libldap。5. 我的nas是2008年的MyBook World Edition,这可能意味着我应该升级到synology或其他设备。 - PoorYorick
听起来问题比我想象的要复杂。这个问题似乎与Samba服务器版本和Mac OS版本的组合有关。 但是如果没有升级NAS的可能性,你可能就没有机会再更换NAS了 - 这真令人烦恼。 - uldo

在终端上尝试以下命令: echo "[default]" >> ~/Library/Preferences/nsmb.conf; echo "smb_neg=smb1_only" >> ~/Library/Preferences/nsmb.conf

或者尝试使用cifs://服务器名代替smb://服务器名