虚拟机Ubuntu访问Windows的FTP或共享文件夹的解决方案
在进行软件开发或系统测试时,我们经常会在虚拟机中运行Ubuntu系统,而宿主机则是Windows。在这两种系统之间进行文件传输和共享是非常高频的需求。本文将详细介绍两种主流且高效的解决方案:通过FTP服务访问以及通过SMB共享文件夹访问。
一、方案一:通过FTP服务访问Windows文件夹
FTP(文件传输协议)是一种经典的文件共享方式。我们可以将Windows作为FTP服务端,在Ubuntu中进行连接和文件操作。
1. Windows端配置FTP服务器
Windows系统自带了IIS中的FTP服务功能,配置步骤如下:
打开“控制面板” -> “程序” -> “启用或关闭Windows功能”。
勾选“Internet Information Services”下的“FTP服务器”(包括FTP服务和FTP扩展性),点击确定安装。
安装完成后,打开IIS管理器,右键“网站”,选择“添加FTP站点”。
设置FTP站点名称和物理路径(即你想共享的文件夹)。
绑定IP地址选择“全部未分配”,SSL选择“无SSL”。
身份验证选择“基本”,授权允许特定用户,并设置读写权限。
如果需要对FTP访问进行IP限制,可以在IIS的FTP IPv4地址和域限制中进行配置,相关的web.config示例规则如下:
<configuration> <system.ftpServer> <security> <ipSecurity allowUnlisted="false"> <add ipAddress="192.168.1.0" subnetMask="255.255.255.0" allowed="true" /> </ipSecurity> </security> </system.ftpServer> </configuration>
配置完成后,请确保Windows防火墙放行了FTP端口(默认21端口)。
2. Ubuntu端连接FTP
在Ubuntu中,你可以使用命令行工具或图形界面来访问FTP服务器。
命令行方式:
首先安装FTP客户端工具:
sudo apt update sudo apt install ftp
连接到Windows FTP服务器:
ftp 192.168.x.x # 根据提示输入Windows的用户名和密码 # 常用命令:ls(查看列表), get file.txt(下载), put file.txt(上传), bye(退出)
图形界面方式(Nautilus文件管理器):
打开Ubuntu的文件管理器,在左侧边栏底部的“其他位置”中,在底部的“连接服务器”输入框中输入:
ftp://192.168.x.x
回车后输入Windows的用户名和密码即可像操作本地文件夹一样通过拖拽传输文件。
二、方案二:通过SMB共享文件夹访问Windows
SMB(服务器消息块)协议是局域网文件共享的标准协议。相比FTP,SMB配置更简单,且无需额外开启后台服务,Windows的文件夹共享本身就是基于SMB协议,访问体验更加无缝。
1. Windows端设置共享文件夹
右键点击需要共享的文件夹,选择“属性”。
切换到“共享”选项卡,点击“高级共享”。
勾选“共享此文件夹”,点击“权限”。
添加“Everyone”用户,并根据需要勾选“读取”或“更改”(读写)权限。
点击“安全”选项卡,确保“Everyone”用户同样拥有相应的NTFS权限,否则即使共享了也无法访问。
2. Ubuntu端访问共享文件夹
图形界面访问:
在Ubuntu文件管理器的“连接服务器”中输入:
smb://192.168.x.x/share_name
其中share_name是你在Windows中设置的共享名称。
命令行挂载访问(推荐用于长期开发):
如果需要频繁访问,将共享文件夹挂载到Ubuntu本地目录是最佳选择。首先安装cifs-utils工具包:
sudo apt update sudo apt install cifs-utils
创建一个本地挂载点:
sudo mkdir -p /mnt/win_share
执行挂载命令:
sudo mount -t cifs //192.168.x.x/share_name /mnt/win_share -o username=your_win_user,password=your_win_password,vers=2.0
如果希望开机自动挂载,可以编辑/etc/fstab文件,在末尾添加一行:
//192.168.x.x/share_name /mnt/win_share cifs username=your_win_user,password=your_win_password,vers=2.0 0 0
注意:为了安全,不建议将密码明文写在fstab中。可以创建一个凭证文件/etc/.smbcredentials:
username=your_win_user password=your_win_password
修改该文件的权限为仅root可读写:
sudo chmod 600 /etc/.smbcredentials
然后修改fstab中的挂载参数为:
//192.168.x.x/share_name /mnt/win_share cifs credentials=/etc/.smbcredentials,vers=2.0 0 0
三、常见问题与排查
网络不通:确保虚拟机网络模式为桥接模式(Bridged)或NAT模式且已正确配置网络。双方互相ping IP测试连通性。
权限拒绝:检查Windows文件夹的共享权限和NTFS安全权限,确保访问用户拥有足够的权限。对于SMB挂载,注意指定正确的
vers版本(Windows 10/11通常建议使用2.0或3.0)。防火墙拦截:在Windows防火墙中放行“文件和打印机共享”(SMB端口445)以及FTP端口21。
四、总结
FTP方案适合需要严格控制读写权限和隔离性的场景,但配置步骤相对繁琐;SMB共享文件夹方案配置简单,与Windows原生集成度高,且支持命令行直接挂载到本地目录,更适合日常开发中频繁、无缝的文件交互。建议开发者优先使用SMB共享文件夹方案,以提高跨系统协作的效率。