如何使用mount和cifs.utils在Raspbian Linux中挂载Windows Server 2016 NFS和SMB 2.0+共享?

时间:2018-08-29 22:37:32

标签: raspberry-pi raspbian windows-server smb cifs

摘要

我正在尝试将具有必需凭据的Windows 2016 Server的远程共享安装到Raspbian目录中。

SMB协议

使用mount命令和cifs.utils安装

我想通过SMB2.0或更高版本的协议进行连接。 Windows Server 2016并未在其UI的任何位置明确声明其运行的版本(谢天谢地,Micro $ oft)。

在Raspbian上,我已经向/ etc / fstab文件中添加了一个条目,以将共享安装到本地目录中。

//192.168.1.31/ /home/pi/windowsshare/  cifs  credentials=/home/pi/.smbcredentials,vers=2.0,sec=ntlm,iocharset=utf8  0  0

它使用此凭据文件(.smbcredentials):

username=Administrator
password=[REDACTED]
domain=AASERVER-1

在这种情况下,我不清楚“域”的含义。域和服务器对我来说是同一回事。我将服务器名称放在域字段中,因为我假设,凭据解析器将尝试查找在计算机Administrator上注册的用户AASERVER-1。大多数其他网络工具仅允许将用户指定为AASERVER-1/Administrator。我需要澄清是否应该使用此字段。

运行mount -a挂载/ etc / fstab中列出的共享后,我遇到了mount error(22): Invalid argument。我运行dmesg来检查系统日志。 dmesg输出:

CIFS VFS: Unable to select appropriate authentication method!
CIFS VFS: Send error in SessSetup = -22
CIFS VFS: cifs_mount failed w/return code = -22

我放弃了sec=ntlm选项,但它再次失败。 dmesg

CIFS VFS: session b9093700 has no tcon available for a dfs referral request
CIFS VFS: cifs_mount failed w/return code = -22

接下来,我摆脱了vers=2.0选项。再次失败。 dmesg

No dialect specified on mount. Default has changed to a more secure dialect, SMB2.1 or later (e.g. SMB3), from CIFS (SMB1). To use the less secure SMB1 dialect to access old servers which do not support SMB3 (or SMB2.1) specify vers=1.0 on mount.
CIFS VFS: session b030a800 has no tcon available for a dfs referral request
CIFS VFS: cifs_mount failed w/return code = -22

显然,该版本需要明确声明,因此删除此选项并不能改善我的结果。

我还尝试了 ntlm ntlmssp ntlmsspi 身份验证协议(man mount.cifs中列出的选项是ntlm,ntlmi,ntlmv2 ,ntlmv2i,ntlmssp,ntlmsspi)

测试服务器配置

由于Windows Server 2016并未在其配置程序中的任何地方明确声明正在使用哪个版本的SMB,因此我在PowerShell中使用了以下命令:

Get-SmbServerConfiguration | Select EnableSMB2Protocol

它返回True,表示SMBv2.0正在运行(但这并不保证较新版本没有运行,afaik)。

使用smbclient测试SMB配置

我下载了smbclient来测试SMB协议,只是为了排除可能引起此问题的网络配置错误。

sudo apt-get install smbclient

然后,我使用-L选项列出了通过服务器上的SMB协议提供的所有共享(技术上为“服务”)。

smbclient -L \\\\AASERVER-1 --user=AASERVER-1/Administrator%REDACTEDPASSWORD -W workgroup
  

注意:“ \\ AASERVER-1”中的\个字符必须转义才能作为参数传递,因此,开头的\\ \\

这将成功连接到服务器,并显示“服务”列表(打印机和文件夹以及进程间通信IPC界面)。

NFS:

我也尝试通过NFS连接,因为SMB无法正常工作。

192.168.1.31:/  /home/pi/windowsshare  nfs  credentials=/home/pi/.smbcredentials,iocharset=ANSI  0  0

我将utf8更改为ANSI,因为NFS服务器已配置为使用ANSI。 失败,并显示错误消息:

mount.nfs: an incorrect mount option was specified

dmesg日志未记录任何错误。

2 个答案:

答案 0 :(得分:0)

您是否尝试过添加vers=2.1

本周在对RedhatCentOS进行升级后,我遇到了类似的问题。

答案 1 :(得分:0)

您的fstab文件中有错误。

//192.168.1.31/ /home/pi/windowsshare/  cifs  credentials=/home/pi/.smbcredentials,vers=2.0,sec=ntlm,iocharset=utf8  0  0

您需要指定一个份额。如果要共享整个c驱动器,请按以下方式指定它:

//192.168.1.31/c$ /home/pi/windowsshare cifs [options redacted]

注意“ c $”,告诉Samba从管理共享中挂载C驱动器。如果要共享多个驱动器,请添加多个条目。您的凭据文件看起来不错。另外,为使c $共享正常工作,用于挂载共享的帐户必须位于Windows计算机的本地管理员组中。

如果要查看特定的共享名称,例如“ myshare”,将“ c $”替换为“ myshare”。您应该指定连接到Server 2016的SMB版本3而不是版本2。