服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-14 简米科技 4,584 字 11 分钟阅读

虚拟机内如何查看并访问samba共享文件夹?,虚拟机访问samba共享文件夹没权限怎么办?

导读虚拟机内查看并访问samba共享文件夹,核心是先确认虚拟机的网络模式能连通宿主机,再通过IP地址加文件管理器或挂载命令直接访问,整个过程不复杂,但90%的失败都卡在防火墙和网络配置上,很多朋友在宿主机上搭建好samba服务器,满心欢喜打开虚拟机准备拷文件,结果要么看不到共享列表,要么提示权限爆红,别急,这篇文章……

虚拟机内查看并访问samba共享文件夹,核心是先确认虚拟机的网络模式能连通宿主机,再通过IP地址加文件管理器或挂载命令直接访问,整个过程不复杂,但90%的失败都卡在防火墙和网络配置上。

很多朋友在宿主机上搭建好samba服务器,满心欢喜打开虚拟机准备拷文件,结果要么看不到共享列表,要么提示权限爆红,别急,这篇文章把虚拟机访问samba共享文件夹这件事拆开揉碎,从网络连通性排查到具体访问命令,再到常见报错应对,一步不落,争取让你看完就能在虚拟机里把共享盘用起来。

虚拟机访问samba共享文件夹前,先弄懂网络这关

虚拟机里的系统不管是什么发行版,想访问宿主机的samba服务,第一步是让两边的网络能互相“看见”,这属于基础中的基础,但也是很多人忽略的坑位。

确认虚拟机网络模式是桥接还是NAT

虚拟机的网络模式直接决定了它和宿主机的关系是“邻居”还是“上下级”。

  • 桥接模式:虚拟机在局域网里拥有独立IP,和宿主机完全平等,互相访问没什么限制。
  • NAT模式:虚拟机躲在宿主机后面,宿主机能轻易访问虚拟机,但虚拟机访问宿主机通常需要走网关地址,有时候会碰到端口不通的情况。

最稳妥的办法:在虚拟机终端里执行 ping 你的宿主机IP,如果能通,网络这关就过了。

查清宿主机在局域网里的IP

在宿主机命令行或设置里看当前IPv4地址,比如Windows宿主机用 ipconfig,Linux宿主机用 ip addr,把IP记下来,这就是你接下来要连接的地址,如果你打算让虚拟机里的多个系统都访问,建议在路由器里给宿主机做静态IP绑定,避免IP变动导致共享路径失效。

关掉宿主机防火墙或放行samba服务端口

samba默认使用139端口(SMB1)和445端口(SMB2/3),在Windows宿主机上,如果开着防火墙,访问往往会失败。

  • Windows系统:在“允许应用通过防火墙”里勾选“文件和打印机共享”,或直接临时关闭防火墙测试。
  • Linux宿主机:使用 sudo ufw allow samba 放行。

做完了这一步,虚拟机访问samba共享文件夹的通道基本就铺好了。

虚拟机怎么访问samba服务器?分系统操作各不同

网络确认通了,接下来就是在虚拟机里动手访问,不同操作系统的虚拟机,访问路径和命令差别挺大,这里分别讲透。

Windows虚拟机访问samba共享文件夹

Windows虚拟机(比如装的是Win10/11专业版)操作起来最直观,打开文件资源管理器,在地址栏输入 \\192.168.x.x (换成你宿主机的IP),回车后输入你事先设置好的smb账号密码,就能看到共享目录列表。

虚拟机内如何查看并访问samba共享文件夹?,虚拟机访问samba共享文件夹没权限怎么办?

如果输入IP后转半天打不开,通常是SMB1协议没启用或网络发现没开,在“控制面板-程序-启用或关闭Windows功能”里勾选“SMB 1.0/CIFS 文件共享支持”,重启后再试。

针对Windows虚拟机,建议直接用IP地址,别用主机名。 因为虚拟机里可能解析不了宿主机在局域网里的NetBIOS名称,用IP反而更省事。

Linux虚拟机挂载samba共享文件夹

Linux虚拟机(比如Ubuntu、CentOS、Kali)是重头戏,也是大家问得最多的地方,在Linux里,访问samba共享有两种主流方式:

临时访问,用smbclient查文件,装好客户端工具后直接用命令查看,不走挂载,适合应急。

sudo apt install smbclient -y
smbclient //192.168.x.x/share -U yourname

永久挂载,把共享目录变成Linux里的一个文件夹,这种方式更适合日常开发或写代码时频繁读写。

sudo mount -t cifs //192.168.x.x/share /mnt/sambadir -o username=yourname,password=yourpass,vers=3.0

挂载成功后,cd /mnt/sambadir 就能当本地目录用。这里有个关键参数 vers=3.0,如果不指定,部分新内核的系统默认用SMB1协议去连,而现代samba服务器都禁用了SMB1,所以会报“protocol negotiation failed”之类的问题。

如果不想每次挂载都敲密码,可以写进 /etc/fstab 文件里,但行业共识认为,在生产环境中不建议把密码明文写入fstab,这属于安全短板,更安全的做法是用 credentials 文件存账号密码,并设置该文件权限为600。

Kali或专用测试虚拟机访问samba的注意事项

如果你用的是Kali这类做安全测试的虚拟机,访问samba共享文件夹之前,最好先确认samba服务的响应情况,用 nmap -p 445 192.168.x.x 快速扫一下端口状态,如果端口状态是filtered,说明中间有防火墙拦截,把宿主机的防火墙规则调整一下再继续。

虚拟机访问samba共享没有权限或连接失败排查

权限问题和连接超时是大家在虚拟机里访问samba时碰到最多的情况,这里列举几个高频场景,基本覆盖80%的报错原因。

提示“不允许一个用户使用一个以上用户名与服务器共享”

这种情况多出现于Windows虚拟机里,并且你之前已经用别的账号连过同一台samba服务器。断开旧连接,换新账号再连就能解决,在命令行输入 net use /delete 清空留下的连接记录,重新打开资源管理器访问,输入正确的凭据即可。

提示“mount error(13): Permission denied”

这在Linux虚拟机里很常见。大概率是samba服务器端限制了你的账号权限

虚拟机内如何查看并访问samba共享文件夹?,虚拟机访问samba共享文件夹没权限怎么办?

,或者你挂载时用的凭证不是有效smb账号。

排查方法:

  • 确认宿主机samba里确实有你这个用户,且密码不为空。
  • 确认你访问的共享目录对用户开放了写权限(读权限搭不出来,一般都要有写权限)。
  • 确认你挂在目录的本地用户,是否和samba用户做了映射。

在部分服务器发行版上,samba用户必须是用 sudo smbpasswd -a 用户名 单独添加的,光有系统账号是不够的。

虚拟机能ping通但连接samba超时

能ping通说明网络链路没问题,但端口可能被占或没监听。你需要在宿主机上确认samba服务确实在监听445端口,命令是 sudo netstat -tlnp | grep 445,如果什么也没输出,说明samba服务没起来,在宿主机上执行 sudo systemctl restart smbd(或nmbd)重启服务再看。

部分虚拟机开启了内部网络隔离策略,影响虚拟机之间的互通,特别是VMware或VirtualBox的高级网络设置里,检查一下虚拟网络编辑器里的网卡和安全策略,确保勾选了“允许虚拟机之间的通信”。

VMware虚拟机里访问samba看不到共享列表

VMware虚拟机里用 \\IP 能访问但看不到具体文件夹,要么是共享名称大小写搞错了(Linux的共享名区分大小写),要么就是客户端没有浏览权限。直接在地址栏把路径写全:\\IP\具体文件夹名,绕过浏览列表来直接命中目标,这个方法对Windows和Linux下的客户端都适用,属于简单直接的思路。

虚拟机内处理samba共享文件效率提速技巧

访问通了以后,日常使用还有一些小细节能让你效率更高,这里整理几个虚拟机和宿主机之间文件交换时的实用经验。

  • 尽量用挂载方式,而不是用smbclient一条条命令拉取,挂载后虚拟机的图形编辑器、终端都能直接操作文件。
  • 在Windows虚拟机上,为samba共享映射一个网络驱动器,右键“此电脑”选择“映射网络驱动器”,填上 \\IP\folder,勾选“登录时重新连接”,下次开机不用再输地址。
  • 如果你在虚拟机里跑的是Web服务或数据库,并且数据存在samba共享里,请注意网络延迟,对性能敏感的应用,不建议直接用samba存储数据库文件,samba适合传文件、看视频、共享源代码,但不适合承载高频读写数据库,这属于技术常识,也是不少运维踩过的坑。
  • 如果你需要在Windows虚拟机里写代码编译,而代码在samba共享上,编译速度会受网络影响,把库文件和临时目录放到本地,而不是全部放共享盘。

Samba版本兼容问题汇总

协议版本是虚拟机访问samba时最隐蔽的一个障碍,老客户端连新服务端,新客户端连老服务端,都会出现奇奇怪怪的问题。

虚拟机内如何查看并访问samba共享文件夹?,虚拟机访问samba共享文件夹没权限怎么办?

系统类型 默认SMB版本 常见问题场景
Windows 10/11 SMB3.0 连老式NAS或Win98时代的samba报错
Ubuntu 22.04+ SMB3.0 连SMB1-only老设备挂载失败
CentOS 7 SMB1/2/3 需要手动装cifs-utils工具包
Kali (最新) SMB3.0 默认禁用SMB1,需要加vers=1.0才能连老设备

如果你的虚拟机系统比较老(比如XP、Win7),连新版本samba服务器时需要在samba配置文件里单独加一条 server min protocol = NT1 才能兼容。但这样做的代价是安全性下降,业内专家指出,SMB1协议存在远程执行漏洞,应在可靠的内网环境下使用。

关于虚拟机访问samba共享文件夹的常见疑问解答

Q:为什么虚拟机里通过主机名找不到samba服务器,必须用IP?

A:虚拟机的DNS和WINS解析机制与宿主机不同,尤其是NAT模式下,虚拟机往往无法解析宿主机的计算机名,直接用IP地址或修改虚拟机里的hosts文件解析主机名,能避免此类问题。

Q:Linux虚拟机开机后如何自动挂载samba共享文件夹?

A:把mount信息写入 /etc/fstab 文件即可实现开机自动挂载,格式为 //192.168.x.x/share /mnt/sambadir cifs username=yourname,password=yourpass,vers=3.0 0 0,建议配合credentials文件使用,避免明文密码出现在fstab里降低系统安全性。

Q:Windows虚拟机访问samba很慢,拷贝大文件时经常断连?

A:主要是SMB协议版本协商或局域网网络不稳导致。先把网卡驱动更新到新版本,然后关闭虚拟机网卡的IPv6协议,只保留IPv4,在samba服务器配置里也可以尝试锁定 server min protocol = SMB2_10 避免协议反复协商,物理链路上,优先使用有线网络而非无线,能有效降低断连概率。

在虚拟机里访问samba共享文件夹,本质上就是一次网络客户端的连接过程。把网络调通、端口排清、账号权限给对,剩下的操作在windows里是敲地址,在linux里是挂目录,没有太多玄学。 遇到问题先从防火墙和SMB版本这两个高频因素排查,多数情况下能一击即中。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱