Ubuntu 18.04 连接 Windows 10 SMB 共享的问题

Ubuntu 18.04 连接 Windows 10 SMB 共享的问题

我已升级到 Ubuntu 18.04,但无法连接到 Windows10 SMB 共享。以下是我所做/测试的内容:

  1. 使用默认文件应用程序,我尝试使用 smb://[用户]@IP 进行连接,出现要求输入密码的对话框,输入密码后,我收到:“无法访问位置:无法从服务器检索共享列表:连接超时。

  2. 使用终端,smbclient -L 192.168.0.100(这是我的 WIN10 PC 的 IP),我获得了该系统上可用共享的正确列表。

  3. sudo ufw app list -> 显示 Samba 为允许的应用程序。

看来 smbclient 能够从 Win10 系统获取共享列表,但默认文件应用程序却不能……我真的不知道如何继续分析。你遇到过类似的问题吗?问候,superauto

答案1

这是一个错误:https://bugs.launchpad.net/gvfs/+bug/1828107

这实际上是他们在尝试修复另一个错误时创建的错误:https://bugs.launchpad.net/ubuntu/+source/gvfs/+bug/1778322

简而言之:浏览 smb 主机依赖于 smb1 方言来进行发现。但是 samba 客户端设计为一直到 smb3,当它进行主机发现时不起作用。他们试图通过强制文件管理器降级到 smb1 来解决这个问题,但随后它就卡在那里了。

Windows 10 在服务器端禁用了 smb1,因此无法访问。smbclient 可以工作,因为可以使用默认值并通过 smb3 访问 Win10。

因此,解决这个问题实际上只有两个方法:

在服务器端强制将 Win10 恢复到 smb1,这是微软不推荐的。

或者对每个单独的共享执行 cifs 挂载,默认情况下将使用较新的 smb 方言。如下所示:

sudo mount -t cifs //192.168.0.100/share-name /mount-point -o username=username,password=some-password,uid=your-ubuntu-user-name

如果您选择采用这条路线,您可以在 /etc/fstab 中使用不同的语法进行设置。

编辑:对于纯文本凭证问题,您可以创建一个凭证文件并使其只有 root 可以访问:

[1] 创建文件 /etc/samba/credentials

[2] 使其仅对 root 可用:sudo chmod 0600 /etc/samba/credentials

[3]然后按照以下形式添加您的凭证:

username=user-name
password=user-password

然后 fstab 语句将看起来像这样:

//192.168.0.100/share-name /mount-point cifs credentials=/etc/samba/credentials,uid=your-ubuntu-user-name 0 0

答案2

我遇到了这个问题,可以使用 Windows 10 和 Ubuntu 20.04 Focal Fossa 修复此问题,而无需安装 SMB v1 或更改注册表。/etc/samba/smb.conf 中需要更改一些内容

   passdb backend = tdbsam
   security = user

更改网络

#### Networking ####

# The specific set of interfaces / networks to bind to
# This can be either the interface name or an IP address/netmask;
# interface names are normally preferred
interfaces = 192.168.100.63 wlp1s0

bind interfaces only = yes

并更改用户

#map to guest = bad user
force user = username

不要忘记将您的用户名添加到 smb。此处记录了带有图像的详细步骤: https://www.yodiw.com/install-samba-ubuntu-20-04-and-windows-10-sharing/

相关内容