使用Nautilus浏览共享时出现“无法从服务器检索共享列表”错误。

在升级从10.04到11.10之前的一段时间,我的Ubuntu桌面停止了允许我访问我的Windows共享目录。我以为升级到11.10问题会得到解决,但事实并非如此。
每当我使用Nautilus点击Windows网络域时,以下消息弹出:
无法挂载位置 - 无法从服务器检索共享列表
我该从哪里开始解决这个问题?现在我变得绝望了 :(
我已经尝试过。
sudo mount -t cifs //SomeMachine/SomeShare some_directory

我明白了

mount error(115): Operation now in progress

奇怪的是,我收到了一个弹窗提示:
Could not display network:/// Error: Dbus error org.freedesktop.DBus.Error.NoReply: Did not receive a reply ...

这是你控制的网络吗?你能查看服务器日志以检查错误吗(如Windows事件日志等)?你能检查自己的日志(/var/log/syslog)并报告任何异常吗? - dpb
关于这个问题,在/var/log/syslog中没有任何相关的信息显示出来 :( - jldupont
看一下这里,有一个用户遇到了类似的问题。 - Bruno Pereira
按照我们之前使用的步骤,编辑你的问题并附上结果。 - Bruno Pereira
@brunopereira81 我已经查看了你的链接,但没有任何效果。问题出在我的Ubuntu机器上。在10.04版本的某次更新之前,它一直运行得很好 :( - jldupont
@jldupont 当您尝试使用其他问题中的命令挂载共享时,您遇到了什么错误?Nautilus的错误是通用的,挂载命令应该会给出其他信息。 - Bruno Pereira
我尝试了"sudo mount -t cifs //SomeMachine/SomeShare some_directory",但是出现了"mount error(115): Operation now in progress"的错误提示。 - jldupont
很奇怪,我收到了一个弹窗显示:“无法显示网络:/// 错误:Dbus错误org.freedesktop.DBus.Error.NoReply:未收到回复…” - jldupont
今天在Ubuntu 20.04中我遇到了一个类似的错误,通过设置server min protocol = NT,我成功解决了这个问题。详见:https://askubuntu.com/questions/1037897/how-to-force-nautilus-to-use-smb1/1235391#1235391 - lanoxx
15个回答

我发现Gord Nickerson的建议对我很有效: 错误信息是“无法从服务器检索共享列表”,因此无法浏览Windows 7电脑、Ubuntu 10电脑或Mac桌面电脑。
首先,Samba守护程序smbd和nmbd必须同时运行才能实现网络浏览。可以使用service命令启动它们,或者对于基于新版systemd的Ubuntu发行版,可以使用systemctl start命令启动。
smbtree命令列出了网络上所有机器的共享。
所以,我们到/etc/samba目录下,然后用sudo pico smb.conf打开配置文件。
名称解析顺序首先使用hosts文件,最后使用广播,而这部分被注释掉了!也许我们可以将其改为:
name resolve order = bcast host

然后使用service smbd restartservice nmbd restart重新启动服务器。

成功了!在升级过程中犯这样的错误真是太糟糕了。升级不应该破坏已经正常工作的东西,尤其是像网络这样重要的东西。好在我还记得在Redhat 5和6中为使Samba工作而必须进行的手动操作。


你知道这个在12.10上会不会工作吗? - Aquarius Power
这在我的12.04上有效。 - Jonathan
只是想提一下 - 这在我的Xubuntu 14.04上有效! - nc4pk
2没有成功... - user72056

这是你问题的真正答案。我之前也遇到过同样的问题。
打开终端并输入以下命令。
gksudo gedit /etc/hosts

在hosts文件中添加计算机的IP地址和名称。保存并退出。
示例IP和名称:
192.168.120.65    blablaPcName

这就是全部。

7当另一台计算机没有静态IP时,你有什么建议?并不是每个人都能控制路由器。 - Fambida
4你在哪台电脑上添加这些行?是在Samba服务器上还是客户端上?你要添加什么地址?是将服务器地址添加到客户端上?还是将客户端地址添加到服务器上?或者是将服务器地址添加到服务器上?抑或是将客户端地址添加到客户端上? - frepie
将计算机IP添加到hosts文件中。是哪台计算机?Linux计算机、Windows计算机还是两者都是?我会尝试所有3种排列组合,但我也想知道如何每次都能找到smb.conf文件,这样我就不必每次都进行冷启动了。 - Nicholas Bourbaki
不工作对我没用!! - Jamie Hutber

问题(至少在我尝试过的Ubuntu 18.04中)是以下命令:
sudo ufw allow Samba

仅为 Samba 充当服务器添加规则。它不会为充当客户端的 Samba 添加任何规则。但是,当您尝试挂载远程共享时,那就是您正在做的事情:在此场景中,您的机器是客户端,远程机器是服务器。

另外,“无回复”错误是一种提示,表示某些防火墙正在搞砸事情。机器通常会响应请求。它们可能会以错误的方式响应,在这种情况下你有其他问题,但是如果它们根本没有响应,则它们的数据包通常被防火墙吞噬。

使 Samba 充当服务器的规则不足以允许 Samba 充当客户端,因为远程机器从其自己的端口 137 响应,但这些响应到达的本地端口不是 137,而是一些随机端口。

要解决这个问题,请执行以下命令:

sudo ufw allow in proto udp from any port 137,138 to any

这将允许UDP数据包到达任何本地端口,只要它们来自远程计算机的137或138端口。端口138可能是不必要的,因为我只看到从137端口到达的数据包,但你永远不知道。
这可能是不安全的,因为源端口可以被伪造,但我们不要过于多疑。
这对我来说解决了问题。

遇到了这个确切的问题,可能是在一些错误的调试后重置了网络首选项。允许防火墙中的Samba解决了这个问题! - HitLuca

可能是连接到系统的一般错误。 在上述线程案例中,名称和IP地址之间存在不匹配,而nmblookup有助于确定问题。此外,这个页面似乎有一些很好的故障排除提示。

我正在复制的内容:

  • 将smbclient设置为调试模式,输出应该显示在dmesg中(-d | --debuglevel = level)
  • smbclient -L //<Samba服务器的IP> -U <服务器用户>
  • nmblookup {name}
  • 你能从其他系统挂载吗?

如果您进行更多故障排除,请编辑您的问题。


只需向防火墙添加"allow out"即可:
  • 端口137/UDP - 由nmbd使用
  • 端口138/UDP - 由nmbd使用
  • 端口139/TCP - 由smbd使用
  • 端口445/TCP - 由smbd使用
这样就可以了,如果你不知道如何做,只需安装"gufw",然后使用"+"和"simple tab"。

使用Ubuntu 14.04:

这个错误可能是由于NetBIOS名称长度超过15个字符引起的。 它应该在文件/var/log/samba/log.smbd中生成类似以下内容的日志:

register_name: NetBIOS name NAME-OF-PC-TOO-LONG is too long. Truncating to

这个错误可以通过编辑文件/etc/samba/smb.conf并添加以下行来修复:
netbios name = NAME-OF-PC

电脑名称不能超过15个字符。


在使用Samba版本4.11.6的Ubuntu 20.04上访问Windows服务器时,我通过添加以下行到/etc/samba/smb.conf解决了该问题。

#### Networking ####
client min protocol = NT1
server min protocol = NT1
name resolve order = bcast host lmhosts wins

我在混合网络环境(Windows/Ubuntu)中使用这种方法取得了非常好的结果。
  1. 按下 Alt+F2 并输入:gksu gedit /etc/nsswitch.conf

  2. 找到以下行:

    hosts:  files mdns4_minimal [NOTFOUND=return] dns mdns4
    
  3. 添加 wins,使其变为:

    hosts:  files mdns4_minimal [NOTFOUND=return] wins dns mdns4
    
  4. 安装 "winbind" 软件包:sudo apt-get install winbind

    (或通过 软件中心Synaptic 安装)

  5. 重新启动计算机或重启网络。


尝试使用Ubuntu上的文件管理器从Windows电脑登录。转到"其他位置",然后在底部选择"连接到服务器"。使用smb://username@serveraddress的格式进行连接。这对我起作用了。

我的问题是由于/etc/samba/smb.conf引起的。搜索了WORKGROUP并删除了之后提到localhost名称的行。确保每台机器上的配置文件中的WORKGROUP是相同的。一个全面的方法是使用sudo apt-get purge samba(和/或remove?),然后sudo apt-get install samba。这是我第一次解决问题的方法,当时我将其中一台机器从16.10升级到17.04(16.10对我来说有些错误)。现在我有两台机器:16.04和17.04。