◆

Mac 访问 Windows 网络共享文档

2023-02-02 01:370

mac 访问 windows 的网络的共享文档

第一步

  • 打开访达,选择前往,连接服务器

第二步

  • 输入对应的服务器 ip

第三步

  • 输入 ip 后就需要输入账号密码了,这个账号密码不一定是电脑的账号密码, 可能是共享的局域网中的账号,比如 git 账号等
mac访问windows的网络的共享文档

地址的完整写法

访达的「连接服务器」(快捷键 Command + K)里,地址不能只填 IP,要带协议前缀。Windows 共享用的是 SMB 协议:

smb://192.168.1.100

如果知道具体的共享名(Windows 上共享文件夹时设的那个名字),可以直接连到那一层,省掉一次选择:

smb://192.168.1.100/共享文件夹名

也可以在地址里带上用户名,这样弹窗时用户名已经填好:

smb://用户名@192.168.1.100

Windows 域环境下用户名要带域前缀,注意 macOS 里要用分号或者反斜杠转义:

smb://DOMAIN;username@192.168.1.100

如果对方机器在同一网段且开了 NetBIOS/mDNS,也能用主机名代替 IP:

smb://desktop-abc123

不过主机名解析在跨网段或者路由器不转发广播时不可靠,IP 更稳。查 Windows 机器的 IP 在那台机器上跑 ipconfig 看 IPv4 地址。

账号密码到底填什么

正文说的这一点是实践中最容易卡住的地方,展开说清楚。SMB 认证的凭据取决于共享方是怎么配的,有三种情况:

1. 本地账户 — 最常见。填的是那台 Windows 机器上的本地用户名和登录密码。注意:

  • 如果那台机器用微软账户登录(Windows 10/11 默认引导你用微软账户),用户名可能不是你看到的显示名。在 Windows 上跑 whoami 能看到真实的账户名,格式是 机器名\用户名。
  • 微软账户登录的机器,SMB 认证要用微软账户的邮箱和密码,而不是本地的 PIN 码。PIN 只是本机登录的凭据,不是账户密码。这个坑很常见。

2. 域账户 — 公司环境。用域账号,格式 DOMAIN\username 或 username@domain.com。正文提到「可能是共享的局域网中的账号,比如 git 账号」,说的就是这类情况——公司里各服务共用同一套 AD 域账号。

3. 来宾(Guest) — 共享方开了来宾访问,不需要密码,在弹窗里选「客人」。但 Windows 10 1709 之后默认禁用了不安全的来宾登录(因为它无法防御中间人攻击),所以现在遇到来宾共享的情况少了,且连接时可能被 macOS 或 Windows 一方拒绝。

常见报错与对应原因

出现问题。请检查服务器名称或 IP 地址,然后重试。(错误 -36 或 NSURLErrorDomain)

网络层没通或者 SMB 服务没开。分步排查:

# 1. 能不能 ping 到(Windows 防火墙默认可能挡 ICMP,ping 不通不代表机器不在)
ping 192.168.1.100

# 2. SMB 端口 445 通不通,这个更准
nc -zv 192.168.1.100 445

nc -zv 返回 succeeded 说明端口开着,问题在认证或权限上;返回 Connection refused 或超时,说明 Windows 那边没开共享服务或者防火墙挡了。

Windows 端要确认的:控制面板 → 网络和共享中心 → 更改高级共享设置,把「启用网络发现」和「启用文件和打印机共享」打开。另外当前网络配置要是「专用网络」而不是「公用网络」——公用网络下 Windows 默认关闭所有共享。

您输入的用户名或密码可能不正确。

除了密码真的错了,还有几个非显而易见的原因:

  • 用了 PIN 而不是微软账户密码(见上面)
  • 用户名少了机器名前缀。试试 机器名\用户名 的格式
  • Windows 账户密码为空。Windows 默认不允许空密码账户进行网络登录,需要在那台机器上给账户设个密码,或者改本地安全策略(不建议)
  • 钥匙串里存了旧密码。macOS 会把 SMB 凭据存进钥匙串,密码改过之后它还在用旧的。打开「钥匙串访问」搜那个 IP 或主机名,把对应条目删掉再重连

没有权限访问此共享。

认证通过了但权限不够。Windows 的共享权限分两层,两层都要给:

  • 共享权限(右键文件夹 → 属性 → 共享 → 高级共享 → 权限)
  • NTFS 权限(右键文件夹 → 属性 → 安全)

实际生效的是两者的交集,很多人只改了一层。常见现象是「能看到共享文件夹但打不开」,那就是共享权限给了、NTFS 权限没给。

连上了但很慢 / 复制大文件卡住

SMB 协议版本协商的问题。老的 SMB1 已经被 macOS 和新版 Windows 禁用(有严重的安全漏洞,WannaCry 就是走这个),如果对方只支持 SMB1 会连不上或者行为异常。让 Windows 端启用 SMB2/SMB3 是正确方向,不要去 macOS 上降级到 SMB1。

另外 macOS 的 SMB 客户端有个已知的性能问题,和 packet signing 有关。可以在 ~/Library/Preferences/nsmb.conf 里配置(文件不存在就新建):

[default]
signing_required=no

这个改动会关掉 SMB 签名,能明显提速,但代价是失去对中间人攻击的防护。只在完全可信的家庭局域网里这么做,公司网络或者公共网络不要关。

挂载点在哪、怎么用命令行操作

访达连上之后,共享会挂载到 /Volumes/ 下:

ls /Volumes/

这意味着连上之后可以在终端里像本地目录一样操作它,cd、cp、rsync 都能用。这比在访达里拖文件靠得住,尤其是大批量传输——rsync 能续传、能校验、能显示进度:

rsync -avh --progress /本地目录/ /Volumes/共享名/目标目录/

也可以完全用命令行挂载,不经过访达:

# 先建挂载点
mkdir -p ~/mnt/winshare

# 挂载(会提示输密码)
mount_smbfs //用户名@192.168.1.100/共享名 ~/mnt/winshare

卸载:

umount ~/mnt/winshare
# 或者
diskutil unmount ~/mnt/winshare

如果提示 Resource busy,说明有进程还在占用这个目录(可能是访达开着它、或者终端 cd 在里面)。查是谁占着:

lsof +D ~/mnt/winshare

让它开机自动挂载

需要经常访问的话,有两种做法。

方法一:加进登录项(推荐)

先在访达里连一次,然后把 /Volumes/ 下出现的那个共享图标拖到 系统设置 → 通用 → 登录项 的列表里。凭据存在钥匙串里,登录后自动挂载不用再输密码。

方法二:写进访达的「个人收藏」侧边栏

连上之后,把共享从侧边栏的「位置」拖到「个人收藏」区域。这样不会自动挂载,但点一下就连,凭据也走钥匙串。我更喜欢这个——自动挂载在网络不通的时候(比如在外面用移动网络)会导致访达卡顿,因为它要等 SMB 连接超时。

反过来:Windows 访问 Mac 的共享

顺便说下反向的情况,因为经常两个方向都要用。macOS 端开启共享:

系统设置 → 通用 → 共享 → 打开「文件共享」→ 在下方添加要共享的文件夹和允许访问的用户

macOS 的文件共享同时提供 SMB 和 AFP(老的 Apple 协议,已废弃)。Windows 用 SMB,在资源管理器地址栏输:

\\Mac的IP地址

或者用 .local 名字(Windows 10 之后支持 mDNS 解析):

\\你的Mac名.local

macOS 这边要注意:共享用的账户需要在「文件共享」的用户列表里显式添加并设权限,而且该账户需要允许 SMB 登录——在文件共享的「选项」里勾上「使用 SMB 共享文件和文件夹」并勾选具体的用户账户,这一步会要求你重新输一次该账户的密码(因为 SMB 需要以不同的方式存储密码哈希)。漏了这一步就会出现「Windows 上输对了密码还是连不上」。

💬留言板0

还没有留言,来发表第一条吧~

PAGE LOAD / LIVEMac 访问 Windows 网络共享文档加载中