在 CentOS 的 VirtualBox 客户机中实现打印机共享,常见做法有三种:通过桥接网络直接使用宿主机共享的打印机、在虚拟机内安装CUPS 使用 USB 直连打印机、由虚拟机充当CUPS+Samba 打印服务器供局域网使用。下面给出可直接落地的步骤与要点。
方案一 桥接网络使用宿主机共享的打印机
- 宿主机(如 Windows)将打印机设为共享,记录共享名(如:HP402dn)。
- VirtualBox 将该 CentOS 客户机的网络设置为桥接网卡(Bridged Adapter),使其与宿主机处于同一局域网。
- 在 CentOS 中安装工具并添加打印机:
- 安装:sudo yum install -y cups samba-client
- 浏览器访问 http://localhost:631 或执行 system-config-printer 打开“添加打印机”。
- 选择“网络打印机”→“Windows 共享打印机(SMB)”,填写形如:
- smb://宿主机IP/共享名
- 或 smb://宿主机名/共享名
- 选择对应驱动,打印测试页。
- 提示:若提示凭据,使用宿主机上具有打印权限的用户名/密码;确保宿主机防火墙放行 SMB(445/TCP) 与打印相关服务。
方案二 虚拟机内 CUPS 直连 USB 打印机
- 将打印机以 USB 方式连接到宿主机,在 VirtualBox 为该客户机勾选“USB”并添加对应的 USB 打印机设备(需安装 VirtualBox Extension Pack)。
- 客户机安装并启动 CUPS:
- 安装:sudo yum install -y cups
- 允许远程管理(可选,便于用浏览器管理):编辑 /etc/cups/cupsd.conf
- 将 Listen localhost:631 改为 Listen 0.0.0.0:631
- 在 、<Location /admin> 段将 Order allow,deny 改为 Order deny,allow,并添加 Allow from 127.0.0.1 与需要网段(如 Allow from 192.168.1.0/24)
- 防火墙放行:sudo firewall-cmd --permanent --add-port=631/tcp && sudo firewall-cmd --reload
- 启动服务:sudo systemctl enable --now cups
- 添加打印机:
- 浏览器访问 http://localhost:631 → “Add Printer”,选择检测到的 USB 设备,选择驱动,打印测试页。
- 说明:多数 HP 机型可直接使用 hplip 提供的驱动与工具(如 hp-setup),必要时安装:sudo yum install -y hplip hplip-gui。
方案三 虚拟机作为 CUPS+Samba 打印服务器
- 适用场景:希望虚拟机统一提供打印服务给局域网(含宿主机和其他设备)。
- 安装服务:sudo yum install -y cups samba
- 配置 CUPS(/etc/cups/cupsd.conf):
- 启用远程访问:Listen 0.0.0.0:631;在 、<Location /admin> 使用 Order deny,allow 并添加允许网段(如 Allow from 192.168.1.0/24)。
- 在“服务器”页勾选:Share printers connected to this system。
- 配置 Samba(/etc/samba/smb.conf)最小示例:
- [global] 中:workgroup=WORKGROUP;security=user;load printers=yes;printing=cups
- [printers]:path=/var/spool/samba;browseable=yes;guest ok=yes;writable=no;printable=yes
- [print$]:path=/var/lib/samba/printers;browseable=yes;read only=yes;write list=root
- 准备驱动与发布:
- 将 CUPS for Windows 驱动(cups-windows-*.exe 解压后的 DLL/INI 等)放入 /usr/share/cups/drivers/
- 创建 Samba 打印账户:sudo smbpasswd -a root
- 发布驱动:cupsaddsmb -H localhost -U root -a -v
- 启动服务与防火墙:
- sudo systemctl enable --now cups smb
- sudo firewall-cmd --permanent --add-service={samba,samba-client} && sudo firewall-cmd --reload
- 客户端连接:
- Windows:\虚拟机IP*打印机共享名*
- Linux:smb://虚拟机IP/打印机共享名
常见问题与排查
- 无法访问 http://localhost:631:确认 cups 已启动(systemctl status cups)、防火墙放行 631/TCP,以及 cupsd.conf 的 Listen/Allow 配置正确。
- SMB 连接失败或凭据错误:核对 宿主机/虚拟机 IP、共享名 与账户权限;确保 SMB 445/TCP 未被阻断;必要时在 Windows 启用“文件和打印机共享”。
- USB 打印机未出现在 CUPS:确认 Extension Pack 已安装、客户机 USB 控制器启用并勾选了对应设备;重启 CUPS 后再添加。
- 驱动不匹配:优先使用厂商提供的 PPD 或 hplip 工具;不确定型号时可先用通用 PostScript 驱动测试。