为什么打印机无法连接?

在Linux系统中共享打印机,能让多台设备(包括其他Linux、Windows或macOS)通过网络使用同一台打印设备,以下是详细的操作指南,遵循CUPS(Common UNIX Printing System) 这一标准方案,兼顾安全性与兼容性:

  • 通过USB或网络将打印机连接到Linux主机。
  • 在终端输入 lpinfo -v,检查系统是否识别打印机(出现 usb://... 或 dnssd://... 等路径即成功)。
  1. 安装必要工具
    sudo apt update && sudo apt install cups avahi-daemon  # Debian/Ubuntu
    sudo dnf install cups avahi  # Fedora/CentOS
    • cups:打印服务核心。
    • avahi:实现局域网自动发现(类似Bonjour)。

配置CUPS共享打印机

步骤1:启用CUPS远程访问与共享

   sudo cupsctl --remote-any  # 允许任意IP访问
   sudo systemctl restart cups

步骤2:通过Web界面配置打印机

  1. 打开浏览器访问:http://localhost:631/admin。
  2. 点击 Add Printer:
    • 选择已识别的打印机(如 USB Printer #1)。
    • 设置共享名称(建议无空格,如 OfficePrinter)。
  3. 勾选 Share This Printer(关键步骤)。
  4. 安装驱动:
    • 优先选择打印机品牌官方驱动(如HP用hplip)。
    • 若无匹配驱动,选通用PPD(如Generic PostScript Printer)。

步骤3:修改CUPS配置文件(可选)

   sudo nano /etc/cups/cupsd.conf

修改以下字段确保共享权限:

   Listen *:631                      # 监听所有接口
   <Location />
     Allow all                      # 允许所有用户
   </Location>
   <Policy default>
     <Limit Send-Document Send-URI>
       Require user @OWNER @SYSTEM
     </Limit>
   </Policy>

重启服务生效:sudo systemctl restart cups。


其他系统连接共享打印机

► Linux客户端

  1. 自动发现(推荐):
    • 打开系统设置 → 打印机 → 自动搜索网络打印机(协议:IPP)。
    • 或手动添加:URI格式 ipp://<主机IP>/printers/OfficePrinter。
  2. 终端命令添加:
    lpadmin -p OfficePrinter -E -v ipp://192.168.1.100/printers/OfficePrinter -m everywhere

► Windows客户端

  1. 打开 控制面板 → 设备和打印机 → 添加打印机。
  2. 选择 “按地址添加打印机” → 协议选 HTTP,URL填写:
    http://<Linux主机IP>:631/printers/OfficePrinter。
  3. 安装对应驱动(从Windows库选择或手动上传)。

► macOS客户端

  • 系统设置 → 打印机与扫描仪 → 点击”+” → 自动发现共享打印机(协议:IPP)。

高级共享方案:Samba(兼容旧版Windows)

若需支持SMB协议(如Windows XP/7):

  1. 安装Samba:
    sudo apt install samba
  2. 编辑Samba配置:
    sudo nano /etc/samba/smb.conf

    末尾添加:

    [printers]
    path = /var/spool/samba
    browseable = yes
    printable = yes
    guest ok = yes
    create mask = 0700
  3. 重启服务:
    sudo systemctl restart smbd
  4. Windows客户端通过 \\<Linux主机IP>\OfficePrinter 添加。

故障排查

问题 解决方法
客户端找不到打印机 检查防火墙:sudo ufw allow 631/tcp
打印任务卡住/失败 清除队列:sudo cancel -a -x
Windows提示驱动错误 在Windows端手动安装匹配驱动
权限拒绝(403 Forbidden) 确保cupsd.conf中Allow all生效

安全建议

  1. 限制访问IP:
    在cupsd.conf中用 Allow from 192.168.1.* 替代 Allow all。
  2. 启用加密:
    访问 https://localhost:631(需配置SSL证书)。
  3. 定期更新:
    sudo apt update && sudo apt upgrade cups  # 保持CUPS最新

Linux通过CUPS实现打印共享,兼顾高效性与跨平台兼容性,配置时注意驱动匹配与网络权限,90%的故障可通过检查防火墙和CUPS日志(/var/log/cups/error_log)解决,对于企业环境,建议启用用户认证(通过cupsd.conf设置Require user @AUTH)提升安全性。

引用说明:

  • 官方CUPS文档:https://www.cups.org/doc/
  • Linux基金会打印工作组标准:https://openprinting.github.io/
  • Samba共享配置参考:https://www.samba.org/samba/docs/

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4755.html

赞 (0)
酷番叔酷番叔
上一篇 2025年6月17日 09:45
下一篇 2025年6月17日 09:56

相关推荐

  • Linux查看当前时间,有哪些常用命令及详细操作步骤?

    Linux作为服务器和开发环境的主流操作系统,时间的准确性和查看方式至关重要,无论是系统日志记录、定时任务执行,还是跨时区协作,都需要掌握查看和调整时间的方法,本文将详细介绍Linux中查看当前时间的多种命令及其实际应用场景,帮助用户根据不同需求选择合适的工具,date命令:最基础的时间查看工具date是Lin……

    2025年9月26日
    24000
  • 如何在Linux系统中运行C程序?

    在Linux系统中运行C程序是开发者的基础技能,整个过程主要包括环境准备、代码编写、编译、链接和运行等步骤,下面将详细拆解每个环节,帮助读者掌握完整流程,环境准备:安装编译工具链Linux系统本身不包含C语言编译器,需先安装GNU编译器集合(GCC),GCC是Linux下最常用的C语言编译工具,支持将C源代码转……

    2025年8月27日
    27700
  • 如何掌握Linux发送报文的高级技巧?

    基础网络测试工具ping(ICMP报文)用途:测试主机连通性,发送ICMP Echo请求,命令示例:ping -c 4 192.168.1.1 # 发送4个ICMP包到指定IPping6 fe80::1 # IPv6测试参数说明:-c [次数]:指定发送次数,-s [字节]:设置数据包大小(如-s 1500……

    2025年7月7日
    28100
  • Linux如何申请大内存?

    在Linux系统中,申请大内存是许多高性能计算、大数据处理或实时应用场景中的常见需求,由于Linux内存管理的虚拟内存机制、物理内存限制以及内核参数约束,直接申请“大内存”时可能会遇到各种问题,本文将详细说明Linux中申请大内存的常见方法、原理及注意事项,帮助开发者高效、安全地实现内存分配,Linux内存管理……

    2025年10月8日
    29900
  • 嵌入式Linux无法联网?如何解决网关配置问题

    在嵌入式Linux系统中配置网关是确保设备访问外部网络(如互联网或跨子网)的核心步骤,开发者和管理员需通过命令行或配置文件设置默认路由规则。

    2025年7月26日
    32400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信