Резюме
Я пытаюсь смонтировать удаленные общие папки с сервера Windows 2016 с необходимыми учетными данными в каталог Raspbian.
протокол SMB
Монтирование с помощью команды mount
и cifs.utils
Я хочу подключиться по протоколу SMB2.0 или новее. Windows Server 2016 явно не указывает где-либо в своем интерфейсе, какую версию он использует (спасибо, Микро $ 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).
Тестирование конфигурации SMB с smbclient
Я скачал 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
В журнале не было ошибок.