我正在尝试将具有必需凭据的Windows 2016 Server的远程共享安装到Raspbian目录中。
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连接,因为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
日志未记录任何错误。
答案 0 :(得分:0)
您是否尝试过添加vers=2.1
?
本周在对Redhat
和CentOS
进行升级后,我遇到了类似的问题。
答案 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。